将Maven项目部署到本地Artifactory服务

时间:2015-08-28 08:42:42

标签: maven ivy artifactory webjars

我有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使用常春藤布局进行发布吗?

1 个答案:

答案 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构建完全集成,允许您执行以下操作:

  1. 将属性附加到Artifactory元数据中的已发布工件。
  2. 捕获可传递给Artifactory REST API的BuildInfo对象,以提供完全可跟踪的构建上下文。
  3. 在构建结束时自动发布所有构建工件。
  4. 该插件的更详细用法示例可在此Github project中找到。

    加分问题

    Maven只能部署到Maven2(默认)或Maven1(旧版)布局存储库。您必须在Artifactory中创建一个新的Maven存储库。