【问题标题】:Deploy artifacts into two different remote repositories - Maven?将工件部署到两个不同的远程存储库 - Maven?
【发布时间】:2025-12-14 15:50:01
【问题描述】:

需要根据特定环境从两个远程存储库部署工件。所以我尝试在 pom.xml 的分发管理中使用配置文件

   <profiles>
<profile>
    <id>dev-repository</id>
    <activation>
        <property>
            <name>devRepo</name>
            <value>true</value>
        </property>
    </activation>
    <properties>
    </properties>
    <distributionManagement>
        <repository>
        <id>dev</id>
        <url>https://nexus/dev</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
    </distributionManagement>
</profile>

<profile>
    <id>qa-repository</id>
    <activation>
        <property>
            <name>!devRepo</name>
        </property>
    </activation>
    <properties>
    </properties>
    <distributionManagement>
          <repository>
        <id>qa</id>
        <url>https://nexus/qa</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
    </distributionManagement>
</profile> 
</profiles>

尝试激活配置文件

> mvn clean deploy -PdevRepo

我收到以下错误。

部署失败:没有在 POM 内部的 distributionManagement 元素或 -DaltDeploymentRepository=id::layout::url 参数中指定存储库元素

好像 pom 无法识别 distributionMangement 标签。

但如果没有单一分布管理的配置文件,它也可以正常工作。

有人请教一下吗?

参考

Setting up Maven to allow deployment to different repositories easily

Deployment issue with Maven Plugin

【问题讨论】:

    标签: java maven maven-3 pom.xml remote-repository


    【解决方案1】:

    我将使用&lt;url&gt;https://nexus/${target.repo}&lt;/url&gt; 形式的url 定义一个distributionManagement,而不是使用配置文件

    然后您可以执行mvn clean deploy -Ptarget.repo=dev 之类的操作。

    【讨论】:

    • 请注意,这个答案可能会受到issues.apache.org/jira/browse/MNG-6870的约束。
    • @Michael-O 谢谢你的提示(我不知道),但是 AFAIK 这不会影响分布管理。我在settings.xml 中有一个distributionManagement 属性,命令行应该是一样的。
    最近更新 更多