7

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

pom.xml

<properties>
    <foo>bar</foo>
</properties>

应用程序属性

foo=${foo}

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

MyClass.java

@MyAnnotation("${foo}") // ${foo} should get replaced at compile time
public void getData() {
    return data;
}
4

1 回答 1

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 一样,您可以配置的内容远不止这些。

这个博客条目很有用。

于 2013-01-09T16:07:52.987 回答