目前,我知道如何使用Maven进行这种过滤:
的pom.xml
<properties>
<foo>bar</foo>
</properties>
app.properties
foo=${foo}
但是可以使用Maven,Spring或其他任何工具进行这种过滤吗?
MyClass.java
@MyAnnotation("${foo}") // ${foo} should get replaced at compile time
public void getData() {
return data;
}
答案 0 :(得分:7)
您是否尝试过执行资源插件?据我所知,您可以将它指向Java源并使用其常规过滤。
http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html
<properties>
<my.name>chad</my.name>
<java.property>//comment</java.property>
</properties>
<build>
<sourceDirectory>target/processed-source/java</sourceDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<filtering>true</filtering>
<targetPath>../processed-source/java</targetPath>
</resource>
</resources>
</build>
因此,首先要将已处理的java源路由到目标目录中的特殊文件夹。接下来,您必须重新配置编译器插件,以便不编译未过滤的源,而是编译新的源。请注意,与所有maven一样,您可以配置比这更多的东西。
此blog entry非常有用。