【问题标题】:Maven-properties-filtering-like for Java annotations?Java注释的Maven-properties-filtering-like?
【发布时间】:2012-12-23 20:35:56
【问题描述】:

目前,我知道如何使用 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;
}

【问题讨论】:

  • 您可以在 generate-sources 阶段对源文件使用 maven 资源过滤 - 将 *.java 文件放在某个非源目录下(最好不要使用 /resources),然后在该阶段复制将它们转移到生成的源目录
  • 这意味着您的注释必须具有 SOURCE 保留策略。你想修补源代码来启动吗?祝你好运:p

标签: java spring maven properties filtering


【解决方案1】:

您是否尝试过使用资源插件的执行。据我所知,您可以将其指向您的 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 很有用。

【讨论】:

  • 感谢您的回答,但即使我指定了targetPath Maven 属性,我也无法使其正常工作。事实上,我从未尝试过使用 *.java 源文件,你有任何工作示例吗?
猜你喜欢
  • 2021-08-05
  • 1970-01-01
  • 2019-03-14
  • 2013-04-02
  • 1970-01-01
  • 1970-01-01
  • 2013-01-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多