【发布时间】:2014-10-16 21:54:13
【问题描述】:
有什么方法可以在 settings.xml 文件中使用两个不同的配置文件在不同的服务器上执行两个不同的构建? 例如: 在我的 settings.xml 文件中,我有两个配置文件:
<profile>
<id>test1</id>
<properties>
<liferay.version>6.2.10.9</liferay.version>
<liferay.maven.plugin.version>6.2.10.6</liferay.maven.plugin.version>
<liferay.auto.deploy.dir>Server1 Details</liferay.auto.deploy.dir>
<liferay.app.server.deploy.dir>Server1 Details</liferay.app.server.deploy.dir>
<liferay.app.server.lib.global.dir>Server1 Details</liferay.app.server.lib.global.dir>
<liferay.app.server.portal.dir>Server1 Details</liferay.app.server.portal.dir>
</properties>
</profile>
<profile>
<id>test2</id>
<properties>
<liferay.version>6.2.10.9</liferay.version>
<liferay.maven.plugin.version>6.2.10.6</liferay.maven.plugin.version>
<liferay.auto.deploy.dir>Server2 Details</liferay.auto.deploy.dir>
<liferay.app.server.deploy.dir>Server2 Details</liferay.app.server.deploy.dir>
<liferay.app.server.lib.global.dir>Server2 Details</liferay.app.server.lib.global.dir>
<liferay.app.server.portal.dir>Server2 Details</liferay.app.server.portal.dir>
</properties>
</properties>
</profile>
<activeProfiles>
<activeProfile>test1</activeProfile>
<activeProfile>test2</activeProfile>
</activeProfiles>
现在,我想要一个项目的“test1”配置文件和另一个项目的“test2”,我希望从 settings.xml 配置文件的属性中获取我的 pom.xml 构建属性。
如果我将两个配置文件都保存在“activeProfiles”中,我的两个项目都会选择“test2”详细信息并构建和部署到错误的服务器。
在 pom.xml 中,我正在使用 build>plugins>这样的配置:
<configuration>
<autoDeployDir>${liferay.auto.deploy.dir}</autoDeployDir>
<appServerDeployDir>${liferay.app.server.deploy.dir}</appServerDeployDir>
<appServerLibGlobalDir>${liferay.app.server.lib.global.dir} </appServerLibGlobalDir>
<appServerPortalDir>${liferay.app.server.portal.dir}</appServerPortalDir>
<liferayVersion>${liferay.version}</liferayVersion>
<pluginName>portlet-name</pluginName>
<pluginType>portlet</pluginType>
</configuration>
请帮忙!
提前致谢!
【问题讨论】:
-
Re “我想要一个项目的'test1'配置文件和另一个项目的'test2'”。你有一个或两个 Maven 项目,即 POM 吗?
-
是的,两个带有配置属性的 diff pom.xml。
-
如果您有两个 POM,为什么还要摆弄配置文件?将适当的属性写入每个 POM,从而完全摆脱配置文件。在KISS principle 的最佳意义上。还要记住 POM 上的“M”代表什么。如果您的模型需要特定的服务器来使用它,那么这是该模型的要求并且属于那里。