配置Maven设置以进行部署

时间:2016-02-03 18:36:14

标签: maven jenkins nexus

我想将工件从Jenkins部署到Nexus到不同的存储库(例如builds-allbuilds-verifiedreleases)。问题是我想在项目POM文件中保持最小配置。我的设置文件现在看起来像:

<servers>
    <server>
        <id>orion-nexus</id>
        <username>admin</username>
        <password>password</password>
    </server>
</servers>

<localRepository>~/.m2/repository</localRepository>

<profiles>
    <!-- Deployment configuration for CI builds for mainline -->
    <profile>
        <id>build</id>
        <repositories>
            <repository>
                <id>builds-all</id>
                <url>http://orion-nexus:8081/</url>
                <snapshots>
                    <checksumPolicy>fail</checksumPolicy>
                </snapshots>
            </repository>
        </repositories>
    </profile>
</profiles>

Project POM:

<distributionManagement>
    <repository>
        <id>orion-nexus</id>
        <layout>default</layout>
        <url><!-- how to avoid explicit URL? --></url>
    </repository>
</distributionManagement>

我想像mvn -B -P build clean install deploy一样运行部署。但是,我不明白如何避免在分发管理部分设置显式URL。我可以在设置文件中设置变量并将其传播到我的POM吗?

是否有针对此类工作流程的分步指南?

1 个答案:

答案 0 :(得分:1)

您可以在settings.xml的{​​{3}}内声明属性,并在<distributionManagement/>配置中使用其名称。

<强>的settings.xml

<profiles>
    <profile>
        <id>distmgt</id>
        <properties>
            <distUrl>scp://...</distUrl>
        <properties/>
    </profile>
</profiles>

<强>的pom.xml

<distributionManagement>
    <repository>
        <id>orion-nexus</id>
        <layout>default</layout>
        <url>${distUrl}</url>
    </repository>
</distributionManagement>

最后

mvn -P distmgt clean deploy

您可以使用profile来避免-P build参数。