我有很多值必须更改的配置文件。我想知道是否有人运行“package”命令是否可以请求一些值并将它们插入我的项目文件中?
答案 0 :(得分:3)
Better Approach将根据环境具有不同的属性/配置文件。
将两组值保存在两个不同的文件中。有时指定文件名。
答案 1 :(得分:1)
对于90%的构建任务,都有Maven。对于其他一切,有maven-antrun-plugin。
我建议创建一个自定义ant脚本(可以嵌入到pom.xml
中),提示用户输入并使用Ant Input Task
答案 2 :(得分:0)
您可以使用maven -P
选择maven个人资料,然后选择属性文件。
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<resource.prefix>dev</resource.prefix>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<resource.prefix>prod</resource.prefix>
</properties>
</profile>
</profiles>
现在以${resource.prefix}_config.properties
的身份访问您的资源文件。因此,当配置文件生成时,将采用资源文件prod_config.properties
。
答案 3 :(得分:0)
除非您执行noahz建议的某些蚂蚁内容,否则无法真正让maven提示输入。
如果您不想使用“个人档案”,可以执行的操作是使用您的pom文件中的属性。
示例:
<project>
<groupId>abc</groupId>
<artifactId>def</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<myProperty>someValue</myProperty>
</properties>
<build>
<plugins>
<plugin>
...
<configuration>
<outputDir>${myProperty}</outputDir>
</configuration>
</plugin>
</plugins>
</build>
</project>
您可以在pom文件中的任何位置使用该属性,甚至可以在过滤资源时使用该属性。
默认情况下,该属性可能为空,然后从命令行设置新值:
mvn package -DmyProperty=anotherValue
anotherValue
将传播到pom中使用的任何地方。
您可以阅读有关Maven资源过滤here的信息。
如果您将文件放在src/main/resources
中,则可以使用上述属性进行过滤:
src/main/resources/important-stuff.properties
some.nice.property = Nice!
some.variable.property = ${myProperty}
这应该添加到pom:
<build>
...
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
...
</build>
过滤的important-stuff.properties
最终会出现在target/classes
和jar中,看起来像这样:
some.nice.property = Nice!
some.variable.property = anotherValue
资源过滤非常方便。