我写了一个小的BeanShell脚本,用源代码中的实际行号替换"__LINE__"
。它在Ant中运行良好。在Maven中过滤源代码
我正在寻找一种方法来过滤Maven中的源代码,以便我的BeanShell脚本可以生成一个新的源代码目录,然后进行编译。
我知道资源文件过滤。有没有类似的源代码设施?
我写了一个小的BeanShell脚本,用源代码中的实际行号替换"__LINE__"
。它在Ant中运行良好。在Maven中过滤源代码
我正在寻找一种方法来过滤Maven中的源代码,以便我的BeanShell脚本可以生成一个新的源代码目录,然后进行编译。
我知道资源文件过滤。有没有类似的源代码设施?
几个月前过滤源代码仍然很棘手,但现在MOJO项目中有一个标准插件。你现在可以用一个经典的插件声明来做到这一点。
要过滤源代码(例如,当您希望Java代码中有一个常量来检索项目版本或artifactId)时,您现在应该使用templating-maven-plugin。
把你的代码,应在生成过程中src/main/java-templates
下进行过滤,你会src/main/java
下非过滤来源通常做。在代码中使用${project.version}
或来自POM的任何属性。
只要把一样的东西:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>templating-maven-plugin</artifactId>
<version>1.0-alpha-3</version> <!-- Be sure to use the last version. Check on the website's plugin -->
<executions>
<execution>
<id>filter-src</id>
<goals>
<goal>filter-sources</goal>
</goals>
</execution>
</executions>
</plugin>
是:-)完成。您放入src/main/java-templates
的代码将被过滤并添加到类路径中。
使用非常简单(请参阅example here)。
这比尊重配置Maven的约定更好。你基本上正在取代几十条XML线和一些黑客来完成一些干净的事情。
附注:这适用于Eclipse的例子。
嗨,我试着按照上面的回答,但是当我将项目导入eclipse-kepler并启用eclipse的自动构建时,它抱怨说它找不到'src/main/java-templates' src dir中的类。 ..也看着项目源代码构建路径,src/main/java-templates的src目录不存在......不知道它是否应该在那里。只是还要提到,当我从eclipse运行'mvn install'时,项目会成功建立,但我希望eclipse不要抱怨,它应该自动从'target/generated-sources/java-templates'中选择处理过的源代码,米错了? – 2014-03-03 10:52:50
src/main/java-templates不是源文件夹,不能在IDE内部配置为一个。这样做会与目标/ generated-sources/java-templates过滤的目录(必须在Eclipse中显示为源文件夹,您不应编辑)冲突。 – 2014-03-13 14:51:40
对于Eclipse内部的自动刷新,我认为你错过了一些M2E配置,尝试在你的pom.xml中添加https://gist.github.com/Batmat/9529785。它工作更好吗? – 2014-03-13 14:52:23