Java注释的Maven-properties-filtering-like?

sp0*_*00m 7 java spring filtering properties maven

目前,我知道如何使用Maven进行这种过滤:

的pom.xml

<properties>
    <foo>bar</foo>
</properties>
Run Code Online (Sandbox Code Playgroud)

app.properties

foo=${foo}
Run Code Online (Sandbox Code Playgroud)

但是有可能使用Maven,Spring或其他任何工具进行这种过滤吗?

MyClass.java

@MyAnnotation("${foo}") // ${foo} should get replaced at compile time
public void getData() {
    return data;
}
Run Code Online (Sandbox Code Playgroud)

cha*_*had 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>
Run Code Online (Sandbox Code Playgroud)

因此,首先要将已处理的java源路由到目标目录中的特殊文件夹.接下来,您必须重新配置编译器插件,以便不编译未过滤的源,而是编译新的源.请注意,与所有maven一样,您可以配置比这更多的东西.

博客条目很有用.