首页 > 解决方案 > 将工件部署到两个不同的远程存储库 - Maven?

问题描述

需要根据特定环境从两个远程存储库部署工件。所以我尝试在 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 清洁部署-PdevRepo

我收到以下错误。

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

似乎 pom 无法识别 distributionMangement 标签。

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

有人请对此提出建议吗?

参考

设置 Maven 以允许轻松部署到不同的存储库

Maven 插件的部署问题

标签: javamavenmaven-3pom.xmlremote-repository

解决方案


我不会使用配置文件,而是使用表单的 url 定义一个 distributionManagement<url>https://nexus/${target.repo}</url>

然后你可以做类似的事情mvn clean deploy -Ptarget.repo=dev


推荐阅读