我有forked一个webjar项目,可以在我公司的环境中本地工作。我们使用Artifactory / Ivy进行依赖管理。
目前,智能表(和其他网络浏览器)pom.xml
显示以下部署:
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.5</version>
<extensions>true</extensions>
<configuration>
<serverId>sonatype-nexus-staging</serverId>
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>true</autoReleaseAfterClose>
</configuration>
</plugin>
默认情况下会发布到Sonatype,这对于公开可见的开源项目一旦获得发布凭据就会很好。
但是,我们目前希望在项目的分支上本地工作并部署到我们的本地 Artifactory服务器。贡献(对于真实项目)将通过Pull Request共享,因此我们对转到Sonatype存储库不感兴趣。
如何更改Maven pom.xml以便mvn deploy
部署到本地配置的Artifactory服务? (当然,凭据存储在Maven配置中)
如果我在Artifactory中创建一个新的Maven布局存储库,我可以告诉Maven使用常春藤布局或进行发布吗?
答案 0 :(得分:4)
第一个选项是使用标准Maven deploy plugin
<distributionManagement>
<repository>
<id>repo-id</id>
<name>Artifactory</name>
<url>http://server:8081/artifactory/repo-id</url>
</repository>
</distributionManagement>
您应该配置settings.xml文件以定义提供身份验证信息的相应条目。服务器条目使用其元素与distributionManagement的不同部分匹配。
<server>
<id>repo-id</id>
<username>repo-username</username>
<password>password/encrypted password</password>
</server>
第二个选项是使用Maven Artifactory plugin
中JCenter存储库中提供的JFrog Bintray<build>
<plugins>
...
<plugin>
<groupId>org.jfrog.buildinfo</groupId>
<artifactId>artifactory-maven-plugin</artifactId>
<version>2.4.0</version>
<inherited>false</inherited>
<executions>
<execution>
<id>build-info</id>
<goals>
<goal>publish</goal>
</goals>
<configuration>
<deployProperties>
<gradle>awesome</gradle>
<review.team>qa</review.team>
</deployProperties>
<publisher>
<contextUrl>https://server:8081/artifactory</contextUrl>
<username>username</username>
<password>{DESede}...</password>
<repoKey>libs-release-local</repoKey>
<snapshotRepoKey>libs-snapshot-local</snapshotRepoKey>
</publisher>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
通过Maven Artifactory插件,Artifactory与Maven构建完全集成,允许您执行以下操作:
该插件的更详细用法示例可在此Github project中找到。
加分问题
Maven只能部署到Maven2(默认)或Maven1(旧版)布局存储库。您必须在Artifactory中创建一个新的Maven存储库。