如何为插件和库配置不同的 distributionManagement 存储库?
How to configure distinct distributionManagement repositories to plugins and libs?
我正在尝试配置父 POM 的 distributionManagement 部分以允许将库和插件上传到不同的 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's User Guidethis page中所述,不可能"deploy build artifacts to remote or virtual repositories"只对本地存储库,所以不可能让Artifactory的布局管理识别神器的类型。
只是不要使用 <distributionManagement>
而是使用 Artifactory Maven Plugin。
配置的<repoKey>
标签允许你使用变量(环境和项目定义)。只需定义一个代表插件和库存储库的变量,并在相应的项目中设置值。
此外,您将在部署时获得完整的 Build Info BOM 作为奖励。
感谢@JBaruch 给 "define a variable that will represent plugin and lib repositories" 的提示,我首先研究了从变量激活的 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。
我正在尝试配置父 POM 的 distributionManagement 部分以允许将库和插件上传到不同的 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's User Guidethis page中所述,不可能"deploy build artifacts to remote or virtual repositories"只对本地存储库,所以不可能让Artifactory的布局管理识别神器的类型。
只是不要使用 <distributionManagement>
而是使用 Artifactory Maven Plugin。
配置的<repoKey>
标签允许你使用变量(环境和项目定义)。只需定义一个代表插件和库存储库的变量,并在相应的项目中设置值。
此外,您将在部署时获得完整的 Build Info BOM 作为奖励。
感谢@JBaruch 给 "define a variable that will represent plugin and lib repositories" 的提示,我首先研究了从变量激活的 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。