GWT 不使用目标中的资源属性文件,而是使用 src/main/resources 中的资源属性文件。如何用占位符制作它?
我有 gwt web 项目,它必须使用 application.properties (在客户端)作为 TextResource 在代码中加载。一切工作正常,但现在我想将所有属性值集中在 maven pom.xml 中。所以我用像 key1=${param1} 这样的占位符制作了 application.properties ,并在 pom.xml 中配置了属性 param1Value
所以,发生的事情是 maven 替换了目标目录中 application.properties 中的占位符,但似乎 gwt 编译器使用src/main/resources 中的 application.properties 文件。我检查了编译的 js 文件,我可以看到占位符没有被 pom.xml 中的值替换(目标的 application.properties 是正确的)。
更新: 问题是,我正在过滤的属性文件是一个 gwt messages 资源包文件,从我所看到的情况来看,maven 创建了一个“生成”文件夹,并根据在根项目源文件夹中找到的属性文件放置了一个生成的 java 文件,不在目标文件夹中。之后,它将其合并到 javascript 通用文件中。 这意味着我有两种可能性: 1)告诉资源插件覆盖位于源文件夹中的属性文件(我对此不太满意,因为我肯定会在下一个颠覆更新时遇到问题) 2)告诉gwt-maven-plugin在target/classes文件夹中寻找属性文件,我认为这是不可能的
你觉得呢?
I have gwt web project, which must use application.properties (on client side) loaded as TextResource in the code. Everything works fine, but now i want to centralize all properties values in maven pom.xml. So i made application.properties with placeholders like key1=${param1} and in the pom.xml i configured property param1Value
So, what happening is that maven replaces the placeholders in application.properties in target dir, but it seems that gwt compiler uses the application.properties file from src/main/resources. I checked the compiled js files and i there i can see that the placeholder is not replaced with its value from the pom.xml (target's application.properties is correct).
UPDATE:
The problem is that, the properties file I am filtering is a gwt messages resources bundle file and from what I saw, maven creates a "generated" folder and puts a generated java file based on the properties file found in the root project sources folder and not in the target folder. After that, it incorporates it in the javascript general file.
This means I have two possibilities:
1) tell the resources plugin to overwrite the properties file located in the sources folder (I am not cool with that because I will certanly have problems on the next subversion update)
2) tell gwt-maven-plugin to seek the properties file in the target/classes folder which I think it is impossible
What do you think ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我通过使用 resources:copy-resources 执行和 build-helper 插件解决了同样的问题。
特别是,配置资源插件:
并使用构建助手包含它:
I resolved the same problem by using resources:copy-resources execution and build-helper plugin.
In particular, configure the resources plugin:
and include it using build helper:
我设法对 GWT 编译中使用的属性文件使用 Maven 过滤。
我使用 com. google.gwt.i18n.client.Constants 接口。
它允许实例化一个扩展常量的接口,方法返回从属性文件中获取的值。
该属性文件可以通过 Maven 过滤进行处理。
这真的很容易做到:
一个警告:过滤在 gwt 开发模式下不起作用
结果可以在 target.generate 文件夹中检查,其中包含使用已过滤属性的接口的 java 实现。
I managed to use maven filtering on properties files used in GWT compilation.
I use the com.google.gwt.i18n.client.Constants interface.
It allows to instanciate an interface that extends Constants, with methods returning values taken from a properties file.
That properties file can be process by maven filtering.
It's really easy to do :
One caveat : filtering is not working in gwt dev mode
Result can be check in the target.generated folder whiwh will contained the java implementation of the interface with the filtered properties used.