如何使用 Maven 将占位符从源 file.properties 替换为另一个 file.properties
how to replace placeholder from a source file.properties to another file.properties with Maven
我正在学习如何使用 Maven 将一个文件属性的占位符替换为另一个文件属性。我的项目有一个名为 testMaven 的主文件夹,我在项目中创建了两个文件属性,其中第一个文件位于 testMaven->local->value.properties 中,文件中有:
用户=测试用户
密码=测试密码
而不是位于 src/main/java->test.properties 中的第二个文件属性有:
用户=@用户@
密码=@密码@
我想在文件 Jar 中加入一个文件属性,其中的字段替换为:
用户=测试用户
密码=测试密码
如何在文件pom.xml中写入来完成上面的描述?
谢谢
您将需要使用两个插件:
- org.codehaus.mojo:properties-maven-plugin 读取包含要使用的值的属性文件
- com.google.code.maven-replacer-plugin 进行替换
它们的可用文档很简单。
更新
给定一个 custom.properties 文件:
custom.user=testUser
custom.password=testPassword
阅读:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>${properties-maven-version}</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files><file>${jbake.inputDirectory}/custom.properties</file>
</files>
</configuration>
</execution>
</executions>
</plugin>
现在,您需要 运行 每个 属性 的替代品:
<plugin>
<groupId>com.google.code.maven-replacer-plugin</groupId>
<artifactId>replacer</artifactId>
<version>${replacer-maven-version</version>
<executions>
<execution>
<id>replace-for-documentation</id>
<phase>prepare-package</phase>
<goals>
<goal>replace</goal>
</goals>
<configuration>
<preserveDir>true</preserveDir>
<basedir>${basedir}/src/main/resources</basedir>
<outputBasedir>${basedir}</outputBasedir>
<outputDir>src/site</outputDir>
<ignoreErrors>true</ignoreErrors>
<regex>false</regex>
<delimiters>
<delimiter>@</delimiter>
</delimiters>
<filesToInclude>
*.properties
</filesToInclude>
<replacements>
<replacement>
<token>user</token>
<value>${custom.user</value>
</replacement>
<replacement>
<token>password</token>
<value>${custom.password}</value>
</replacement>
</replacements>
</configuration>
</execution>
</executions>
</plugin>
在 src/main/resources 下的属性文件中出现的任何 @user@ 或 @password@ 都将被替换。生成的文件将在 src/site
下
我正在学习如何使用 Maven 将一个文件属性的占位符替换为另一个文件属性。我的项目有一个名为 testMaven 的主文件夹,我在项目中创建了两个文件属性,其中第一个文件位于 testMaven->local->value.properties 中,文件中有:
用户=测试用户 密码=测试密码
而不是位于 src/main/java->test.properties 中的第二个文件属性有:
用户=@用户@ 密码=@密码@
我想在文件 Jar 中加入一个文件属性,其中的字段替换为: 用户=测试用户 密码=测试密码
如何在文件pom.xml中写入来完成上面的描述? 谢谢
您将需要使用两个插件:
- org.codehaus.mojo:properties-maven-plugin 读取包含要使用的值的属性文件
- com.google.code.maven-replacer-plugin 进行替换
它们的可用文档很简单。
更新
给定一个 custom.properties 文件:
custom.user=testUser
custom.password=testPassword
阅读:
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>properties-maven-plugin</artifactId> <version>${properties-maven-version}</version> <executions> <execution> <phase>initialize</phase> <goals> <goal>read-project-properties</goal> </goals> <configuration> <files><file>${jbake.inputDirectory}/custom.properties</file> </files> </configuration> </execution> </executions> </plugin>
现在,您需要 运行 每个 属性 的替代品:
<plugin> <groupId>com.google.code.maven-replacer-plugin</groupId> <artifactId>replacer</artifactId> <version>${replacer-maven-version</version> <executions> <execution> <id>replace-for-documentation</id> <phase>prepare-package</phase> <goals> <goal>replace</goal> </goals> <configuration> <preserveDir>true</preserveDir> <basedir>${basedir}/src/main/resources</basedir> <outputBasedir>${basedir}</outputBasedir> <outputDir>src/site</outputDir> <ignoreErrors>true</ignoreErrors> <regex>false</regex> <delimiters> <delimiter>@</delimiter> </delimiters> <filesToInclude> *.properties </filesToInclude> <replacements> <replacement> <token>user</token> <value>${custom.user</value> </replacement> <replacement> <token>password</token> <value>${custom.password}</value> </replacement> </replacements> </configuration> </execution> </executions> </plugin>
在 src/main/resources 下的属性文件中出现的任何 @user@ 或 @password@ 都将被替换。生成的文件将在 src/site
下