如何激活maven项目中除settings.xml中定义的默认配置文件之外的特定配置文件?

时间:2015-07-22 18:04:29

标签: maven

我的gsi-repos文件中有两个配置文件(my-repossettings.xml),gsi-repos是默认的有效配置文件。

如何在某些maven项目中激活个人资料my-repos?这可以在我的项目pom.xml中完成吗?

的settings.xml

<profiles>
        <profile>
            <id>gsi-repos</id>
            <repositories>
                <repository>
                    <id>cp-releases</id>
                    <name>CP Releases</name>
                    <url>http://org.release-server.com/nexus/content/repositories/cp-releases</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                </repository>
            </repositories>
        </profile>
        <profile>
            <id>my-repos</id>
            <repositories>
                <repository>
                    <id>my-releases</id>
                    <name>My Releases</name>
                    <url>http://my.release-server.com/nexus/content/repositories/releases/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                </repository>
            </repositories>
        </profile>
</profiles>

<activeProfiles>
        <activeProfile>gsi-repos</activeProfile>
</activeProfiles>       

1 个答案:

答案 0 :(得分:0)

使用配置文件的替代方法可以是:

如果要区分版本最终在您的nexus中的位置,您可以在settings.xml文件中提供不同的属性。只需在CI服务器上或实际执行mvn deploy

的计算机上设置这些属性

的settings.xml:

[...]
<profiles>
  <profile>
    <id>nexus-profile</id>
    <activation>
      <activeByDefault>true</activeByDefault>
    </activation>
  <properties>
    <repo.releases.url>https://nexus/content/repositories/releases/</repo.releases.url>
    <repo.snapshots.url>https://nexus/content/repositories/snapshots</repo.snapshots.url>
    <repo.lib-releases.url>https://nexus/content/repositories/libs/</repo.lib-releases.url>
  </properties>
 </profile>

   [...]

所以在你的pom.xml(或匹配的父pom)中:

  [...]
  <distributionManagement>
    <repository>
        <id>releases</id>
        <name>Managed Release Candidate Repository</name>
        <url>${repo.releases.url}</url>
      </repository>
      <snapshotRepository>
        <id>snapshots</id>
        <name>Managed Snapshots Repository</name>
        <url>${repo.snapshots.url}</url>
      </snapshotRepository>
  </distributionManagement>
  [...]

将其工件部署到libs存储库的项目只会为该URL使用不同的属性。

您可以将它放入projet-parent.pom和libs-parent.pom中 - 因此任何使用其中一个作为其父级的pom都不必处理distributionManagement。

可以将distributionManagement添加到配置文件中并根据某些激活(例如,如果存在某个文件)激活它们:http://maven.apache.org/guides/introduction/introduction-to-profiles.html 但我建议不要过度使用maven中的配置文件。