如何配置不同的distributionManagement存储库到插件和库?

时间:2015-02-09 13:05:54

标签: java maven deployment artifactory

我尝试配置父POM的distributionManagement部分以启用将lib和插件上载到不同的Artifactory存储库,但maven 3仅支持distributionManagement配置的一部分。

由于我使用不同的存储库来下载插件和库并且它不能用于为每种类型的工件创建一个父POM,是否可以配置不同的存储库以让Artifactory或简单地maven识别类型工件和部署到正确的存储库?

这是当前的pom:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.ornanization</groupId>
    <artifactId>corporative-parent</artifactId>
    <packaging>pom</packaging>
    <distributionManagement>
        <repository>
            <id>artifactoryRelease</id>
            <name>artifactory-libs-releases<name>
            <url>${artifactory.url}/libs-release-local</url>
        </repository>
        <snapshotRepository>
            <id>artifactorySnapshot</id>
            <name>artifactory-libs-snapshots</name>
            <url>${artifactory.url}/libs-snapshot-local</url>
        </snapshotRepository>
    </distributionManagement>
</project>

这是我要添加的条目:

<distributionManagement>
    <repository>
        <id>artifactoryRelease</id>
        <name>artifactory-plugins-releases</name>
        <url>${artifactory.url}/plugins-release-local</url>
    </repository>
    <snapshotRepository>
        <id>artifactorySnapshot</id>
        <name>artifactory-plugins-snapshots</name>
        <url>${artifactory.url}/plugins-snapshot-local</url>
    </snapshotRepository>
</distributionManagement>

p.s。:如Artifactory的用户指南的this page所述,它不可能将构建工件部署到远程或虚拟存储库&#34;仅限于本地存储库,因此不可能让Artifactory的布局管理识别工件的类型。

2 个答案:

答案 0 :(得分:2)

请勿使用<distributionManagement>并改为使用Artifactory Maven Plugin

配置的<repoKey>标记允许您使用变量(环境和项目定义)。只需定义一个代表插件和lib存储库的变量,并在相应的项目中设置值。

此外,您将获得部署的全部Build Info BOM作为奖励。

答案 1 :(得分:1)

感谢@JBaruch提示“定义一个代表插件和库存储库的变量”,我首先对maven配置文件进行了研究,以便从变量激活,并意识到如果某个条件匹配,可以激活配置文件,所以我最终得到了以下解决方案:

<profile>
    <id>plugins-deploy-artifactory</id>
    <activation>
        <file>
            <exists>target/classes/META-INF/maven/plugin.xml</exists>
        </file>
    </activation>
    <distributionManagement>
        <repository>
            <id>artifactoryRelease</id>
            <name>artifactory-corporativo-releases</name>
            <url>${artifactory.url}/plugins-release-local</url>
        </repository>
        <snapshotRepository>
            <id>artifactorySnapshot</id>
            <name>artifactory-corporativo-snapshots</name>
            <url>${artifactory.url}/plugins-snapshot-local</url>
        </snapshotRepository>
    </distributionManagement>
</profile>

因此,当工件是插件时,上面的配置文件被激活,否则,将使用默认的distributionManagement。