我用它来构建我的spring mvc app:
mvn clean package
我使用maven war插件创建一个war文件,但我遇到的问题是在我的资源文件夹中我有我的.properties文件的开发版本,用于log4j等。
当我推进生产并运行时:
java -jar ...
它爆炸了war文件,然后在那时我可以使用我的生产设置修改.properties文件,但我显然想在我的maven构建中进行生产。
有没有办法告诉maven这是一个生产版本,所以从其他地方获取这些文件?在开发过程中,继续做它现在正在做的事情?
答案 0 :(得分:1)
用户maven个人资料。 Maven配置文件可帮助您为不同的配置文件指定不同的属性。所以你可以有两个配置文件 - 开发和生产。
像这样 -
<profiles>
<profile>
<id>development</id>
<!-- we'll properties here... -->
</profile>
<profile>
<id>production</id>
<!-- ...and here -->
</profile>
</profiles>
就像这个例子 -
<profile>
<id>development</id>
<properties>
<db.driverClass>oracle.jdbc.driver.OracleDriver</db.driverClass>
<db.connectionURL>jdbc:oracle:thin:@127.0.0.1:1521:XE</db.connectionURL>
</properties>
</profile>
<profile>
<id>production</id>
<properties>
<db.driverClass>oracle.jdbc.driver.OracleDriver</db.driverClass>
<db.connectionURL>jdbc:oracle:thin:@134.0.0.1:3124:XE</db.connectionURL>
</properties>
</profile>
答案 1 :(得分:0)
这里有几个选项。第一个(正如其他人提到的那样)是使用maven配置文件。您可以使用以下内容:
,而不是拥有多个版本的属性文件mypropsfile.properties
-----------------------
prop1=${prop1.val}
prop2=${prop2.val}
然后在您的配置文件中,您可以为这些属性定义值(确保启用了资源过滤以使其工作。请参阅示例http://www.manydesigns.com/en/portofino/portofino3/tutorials/using-maven-profiles-and-resource-filtering)。
您还可以让属性文件包含生产值,但能够在开发中覆盖这些文件。 Spring profiles对此有帮助。例如,在开发模式中,您可以查找名为<user-home>/mypropertiesoverride.properties
的属性文件,该文件可用于覆盖具有特定开发属性的任何生产值属性。
我更喜欢这里的第二种方法,你有一个默认属性文件,然后你可以覆盖选择属性。