我尝试使用properties-maven-plugin
在构建时读取项目属性,然后使用maven-resources-plugin
替换文本文件中的属性。以下是他们的声明:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0-alpha-1</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>${basedir}/src/main/resources/sample.properties</file>
</files>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<overwrite>true</overwrite>
<outputDirectory>${basedir}/target</outputDirectory>
<resources>
<resource>
<directory>${basedir}/src/main/resources</directory>
<includes>
<include>**/*.txt</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
以下是sample.properties
hello.txt
和src/main/resources
的内容
sample.properties
name=test_user
hello.txt
Hello ${name}
作为构建过程的结果,在目标目录中创建的src/main/resources/hello.txt
没有预期的内容。
Expected hello.txt
Hello test_user
Actual hello.txt
Hello ${name}
有人可以解释一下我做错了什么吗?
PS:我添加了ant任务来打印项目属性$ {name}以检查properties-maven-plugin的功能,它似乎工作正常。
回答:如果其他人遇到同样的问题,请尝试一下 -
在IDE上关闭自动构建(在我的情况下为Eclipse),然后构建项目。可能出现的问题是,您的IDE会继续构建项目(替换资源中的属性),而不是由properties-maven-plugin设置运行时项目属性。它对我有用。
答案 0 :(得分:0)
要过滤资源,惯例是在git status
中保留要过滤的文件并通过以下方式进行过滤:
src/main/resources
如果您想要包含/排除文件,可以使用包含/排除部分,如下所示:
<project>
...
<build>
...
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
...
</resources>
...
</build>
...
</project>
没有必要使用properties-maven-plugin来读取属性,并明确地将maven-resources-plugin添加到生命周期中,因为它默认存在。