2

我有一个使用 Maven 构建的 Grails 项目。在这个项目中有一个资源文件smth.properties,最后一行看起来像:

build.number=${build.number}

我试图用maven-resources-plugin它来过滤它并在执行时填充mvn -Dbuild.number=1.0 install,但似乎插件不起作用,因为grails-maven-plugin它起作用了。相同的代码但没有 Grails 可以完美运行。

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

4

2 回答 2

1

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

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

然后使用您的命令行运行:

mvn -Dname=myNewValue install
于 2012-10-02T12:17:50.233 回答
0

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

它绑定到流程资源生命周期阶段。

如果你想用另一个插件重新处理资源,一个简单的方法是将它们配置为 1)第一个插件,从文件夹 A 中获取资源并复制到文件夹 B(经过一些处理) 2)第二个插件,从文件夹 B 中获取资源,然后复制到文件夹C

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

resources:resources 将主源代码的资源复制到主输出目录。

这个目标通常会自动执行,因为它默认绑定到流程资源生命周期阶段。它总是使用 project.build.resources 元素来指定资源,并且默认使用 project.build.outputDirectory 来指定复制目标。

于 2012-10-02T11:40:01.730 回答