我可以在pom或settings.xml中包含mvn deploy:deploy-file而不是cli目标

时间:2016-02-02 16:35:14

标签: maven teamcity artifactory

我需要向Artifactory部署一个自定义jar以及从我的Java项目生成的jar。目前我能找到的唯一方法是使用命令行目标:

mvn deploy:deploy-file -DgroupId=<group-id> \
  -DartifactId=<artifact-id> \
  -Dversion=<version> \
  -Dpackaging=<type-of-packaging> \
  -Dfile=<path-to-file> \
  -Durl=<url-of-the-repository-to-deploy>

有没有办法在pom文件中包含这个?作为插件还是什么?

4 个答案:

答案 0 :(得分:12)

不确定。只需定义绑定到deploy阶段的maven-deploy-plugin:deploy-file目标的执行,并使用您的值进行配置。部署项目时,将调用此执行并部署JAR。

<plugin>
    <artifactId>maven-deploy-plugin</artifactId>
    <version>2.8.2</version>
    <executions>
        <execution>
            <id>deploy-file</id>
            <phase>deploy</phase>
            <goals>
                <goal>deploy-file</goal>
            </goals>
            <configuration>
                <file><!-- path-to-file --></file>
                <url><!-- url-of-the-repository-to-deploy --></url>
                <groupId><!-- group-id --></groupId>
                <artifactId><!-- artifact-id --></artifactId>
                <version><!-- version --></version>
                <packaging><!-- type-of-packaging --></packaging>
            </configuration>
        </execution>
    </executions>
</plugin>

请注意,您可能还需要添加repositoryId。这是要在<id>的{​​{1}}部分<server>下映射的服务器ID。

答案 1 :(得分:0)

您可以将custom maven settings.xml上传到TeamCity,您必须在其中指定发布管理和服务器on this documentation page。在此之后,如果您更改maven构建步骤以使用上载的设置,则只需在此步骤中将deploy gial添加到已执行目标集即可完成部署。

答案 2 :(得分:0)

Artifactory手册中的Working with Maven部分详细介绍了此主题,特别是关于deploying artifacts的部分。
此外,您还可以观看有关setting Artifactory as a Maven repository的截屏视频。

要通过Artifactory部署构建工件,必须将distributionManagement元素添加到项目pom文件中,并使用要将工件部署到的目标本地存储库的URL。此外,您需要在settings.xml文件中configure使用Artifactory服务器凭据 Artifactory可以帮助生成distributionManagement片段和settings.xml(请参阅我上面提供的链接中的更多信息)。

答案 3 :(得分:0)

我个人认为在POM中声明它是一种很好的方法。 例如,如果您有一个多模块Maven项目,其中包含从父POM / super POM继承的子POM,并且要上载的自定义jar仅包含在子模块中的1个中,那么您必须在父模块中显式声明配置POM(因为mvn deploy通常用于执行superpom)并声明每个其他子POM跳过配置的执行,这会使POM结构变得混乱。

更好的方法是编写脚本,并将其链接到deploy目标的运行配置,因为deploy:deploy-file目标是在构建生命周期结束时。