我有gwt web项目,它必须使用在代码中作为TextResource加载的application.properties(在客户端)。一切正常,但现在我想集中maven pom.xml中的所有属性值。所以我使用key1 = $ {param1}等占位符创建了application.properties,并在pom.xml中配置了属性param1Value
所以,发生的事情是maven替换了目标dir中application.properties中的占位符,但似乎gwt编译器使用src / main / resources中的application.properties文件。我查看了已编译的js文件,我可以看到占位符没有替换为pom.xml中的值(目标的application.properties是正确的)。
更新: 问题是,我正在过滤的属性文件是一个gwt消息资源包文件,从我看到,maven创建一个“生成”文件夹,并根据在根项目源文件夹中找到的属性文件放置生成的java文件,不在目标文件夹中。之后,它将它合并到javascript通用文件中。 这意味着我有两种可能性: 1)告诉资源插件覆盖位于sources文件夹中的属性文件(我不是很酷,因为我将在下一次subversion更新时遇到问题) 2)告诉gwt-maven-plugin在target / classes文件夹中查找属性文件,我认为这是不可能的
您怎么看?
答案 0 :(得分:4)
我通过使用资源解决了同样的问题:copy-resources execution和build-helper plugin。 特别是,配置资源插件:
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>filter-sources</id>
<goals>
<goal>copy-resources</goal>
</goals>
<phase>generate-sources</phase>
<configuration>
<outputDirectory>${project.build.directory}/gwt-extra</outputDirectory>
<resources>
<resource>
<filtering>true</filtering>
<directory>src/main/filtered-sources</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
并使用build helper包含它:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>add-source-gwt</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>${project.build.directory}/gwt-extra</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
答案 1 :(得分:1)
我设法对GWT编译中使用的属性文件使用maven过滤 我使用com.google.gwt.i18n.client.Constants界面。
它允许实例化一个扩展常量的接口,方法返回从属性文件中获取的值 该属性文件可以通过maven过滤进行处理。
这很容易做到:
有一点需要注意:过滤在gwt dev模式下无法正常工作
结果可以在target.generated文件夹中检查,该文件夹将包含使用过滤属性的接口的java实现。