通过 maven 在部署时设置特定于应用程序的属性

Setting application-specific properties on deploy by maven

我想将 java 应用程序部署到一个 tomcat 服务器两次,每次使用不同的环境属性。

我想找到一个方法

mvn tomcat7:deploy -Denvironment=local

我不介意使用其他maven插件。

部署后无需更改文件。 这有可能吗? 谢谢你的回答。

您可以拥有一个启用 resource filtering 的配置文件(类似于 application.properties)。然后您可以参数化该配置文件中的值,并为每个部署传递不同的参数值 (-Dkey1=value1 -Dkey2=value2)。

您可以在命令行上传递不同的参数值,或者您可以将它们固定在 different profiles 中,然后只需从命令行 (-Psecond-deployment) 激活适当的配置文件。

从您的问题中建议的方法来看,似乎有点不幸的是:从最基本的意义上说,Maven 是一种构建工具,旨在从构建中生成一致的工件。您问题中建议的方法不再是这种情况。如果这是一个从未用作其他模块依赖项的 Web 应用程序,这可能没问题。但只是强调不同的部署配置是一个部署问题,而不是 build 问题。

我几乎没有使用解决方法。 我创建了不同的配置文件,用于更新应用程序 属性.

示例: 在我的 POM 中我有:

<profiles>
    <profile>
        <id>local</id>
        <properties>
            <environment>local</environment>
            ....
        </properties>
    </profile>

在 application.property 文件中我有

environment=@environment@

(@是正确的!)

这样我就可以使用命令

在定义的环境中部署我的应用程序
mvn -P local tomcat7:deploy 

并在其他任何地方使用环境变量作为 ${environment}