如何为不同的构建保留两个不同项目的两个maven设置配置文件?

时间:2014-10-16 21:54:13

标签: java maven liferay

有什么办法可以在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”详细信息并构建&amp;部署到错误的服务器。

在pom.xml中我正在使用build&gt; plugins&gt;这样的配置:

      <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>

请帮忙!

提前致谢!

2 个答案:

答案 0 :(得分:0)

难怪test2被选中。在&lt; activeProfiles&gt;中同时使用test1test2无论(重复的,因此无意义的)POM或cmd线激活,两者都始终处于活动状态。

你很可能在两者中的任何一个中配置了相同的设置,虽然POM和settings.xmls是声明性的,即它们中没有程序流,但是在Maven运行时解析它们时会有一个流程。然后test2是后者并覆盖之前test1.

的设置

根据Introduction to Build Profiles, Deactivating a profile&#34;从Maven 2.0.10开始,可以使用命令行停用一个或多个配置文件,方法是在其标识符前加上字符&#39;!& #39;或者&#39; - &#39; &#34;

答案 1 :(得分:0)

我通过在settings.xml中创建两个不同的配置文件并保持为空来解决了这个问题。 因为,我正在使用eclipse,我选择了来自eclipse的项目的差异配置文件 Maven&gt;选择个人资料。 这样我可以选择为我的项目选择任何配置文件并部署到选定的配置文件服务器。

我这样做的原因:在协作团队环境中,我们只需要在部署之前共享settings.xml文件并选择配置文件。无需每次都更改pom.xml。

如果有人有更好的解决方案,请发帖。学习新东西总是好的。