2012-10-02 162 views
2

我有一个使用Maven构建的Grails项目。 有这个项目是一个资源文件smth.properties最后一行出现的样子:Maven资源插件不会过滤Grails项目上的资源

build.number=${build.number} 

我试图用maven-resources-plugin对其进行过滤,并在执行mvn -Dbuild.number=1.0 install填补,但目前看来,插件不起作用,因为grails-maven-plugin做。 相同的代码,但没有Grails完美。

如何使用Grails过滤资源以填充所有字段${name}-Dname=valuemvn install

回答

0

Maven资源处理基本上是资源的副本,从一个目录到另一个目录,替换占位符。

它受制于流程资源生命周期阶段。

如果你想与其他插件重新处理的资源,一个简单的方法是将其配置为 1)第一个插件,从folderA采取资源并复制到文件夹B(有一些处理) 2)第二个插件,取来自folderB的资源,并复制到文件夹C

并绑定到2个不同的阶段,以确保正确的执行顺序。

resources:资源将主源代码的资源拷贝到 的主输出目录。

这个目标通常会自动执行,因为它被默认的 绑定到过程资源生命周期阶段。它始终使用 project.build.resources元素指定资源,并且由 默认使用project.build.outputDirectory指定副本 目标。

+0

'MVN资源:

<project> ... <properties> <name>my default value</name> </properties> ... <build> ... <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> ... </build> ... </project> 

然后使用命令行运行resources'的伟大工程。 'mvn install'启动'grails-war-plugin'并且过滤不起作用。 – Alexey

+0

当然,但两者都试图在同一个源文件上工作,而且可能会覆盖另一个文件计算的文件。这就是为什么你应该关心插件在做什么,并确保其中一个工作在另一个的结果 –

1

而是直接配置在<build/>标签内过滤maven-resources-plugin您可以添加资源:

mvn -Dname=myNewValue install 
+0

没有任何反应。 '$ {build.number}'仍然在WAR文件中 – Alexey