用法

介绍

Deploy Plugin 有两个基本功能。在大多数项目构建中,构建生命周期的部署阶段是使用deploy:deploy mojo 实现的。此外,可以使用deploy:deploy-file mojo将未使用 Maven 构建的工件添加到任何远程存储库。

部署:部署Mojo

在大多数情况下,当您调用默认构建生命周期的部署阶段时,会调用此 mojo。

要启用此 mojo 功能,您必须包含一个有效的<distributionManagement/>部分 POM,它至少提供一个<repository/>定义您的工件的远程存储库位置。要将快照工件与发布工件分开,您还可以指定<snapshotRepository/>位置。最后,要部署项目网站,您还必须在此处指定<site/>部分。还需要注意的是,此部分可以继承,允许您为一组相关项目指定一次部署位置。

如果您的存储库是安全的,您可能还需要配置您的settings.xml文件以定义提供身份验证信息的相应<server/>条目。服务器条目使用它们的<id/>元素匹配到 distributionManagement 的不同部分。例如,您的项目可能有一个类似于以下内容的 distributionManagement 部分:

[...]
  <distributionManagement>
    <repository>
      <id>internal.repo</id>
      <name>MyCo Internal Repository</name>
      <url>Host to Company Repository</url>
    </repository>
  </distributionManagement>
[...]

在这种情况下,您可以在settings.xml中指定服务器定义,以便同时为这两个存储库提供身份验证信息。您的服务器部分可能如下所示:

[...]
    <server>
      <id>internal.repo</id>
      <username>maven</username>
      <password>foobar</password>
    </server>
[...]

有关如何避免在settings.xml中使用明文密码的说明,请参阅有关密码加密的文章。

正确配置存储库部署信息后,部署项目的工件只需要调用构建的部署阶段:

mvn deploy

部署:部署文件Mojo

deploy:deploy-file mojo 主要用于部署工件,这些工件不是由 Maven 构建的。项目的开发团队可能会也可能不会为工件提供 POM,并且在某些情况下,您可能希望将工件部署到内部远程存储库。部署文件 mojo 提供了涵盖所有这些用例的功能,并为动态生成 POM 提供了广泛的可配置性。此外,您可以指定存储库使用的布局。部署文件 mojo 的完整使用说明可以描述为:

mvn deploy:deploy-file -Durl=file://C:\m2-repo \
                       -DrepositoryId=some.id \
                       -Dfile=your-artifact-1.0.jar \
                       [-DpomFile=your-pom.xml] \
                       [-DgroupId=org.some.group] \
                       [-DartifactId=your-artifact] \
                       [-Dversion=1.0] \
                       [-Dpackaging=jar] \
                       [-Dclassifier=test] \
                       [-DgeneratePom=true] \
                       [-DgeneratePom.description="My Project Description"] \
                       [-DrepositoryLayout=legacy]

如果未以某种方式指定以下所需信息,则目标将失败:

  • 要部署的工件文件
  • 要部署的文件的组、工件、版本和打包。这些可以从指定的 pomFile 中获取,并使用命令行覆盖或指定。当 pomFile 包含parent部分时,如果没有为当前项目或在命令行上进一步指定 groupId,则可以考虑 parent 的 groupId。
  • 存储库信息:要部署到的 url 和映射到 settings.xml 文件中服务器部分的 repositoryId。如果您不指定 repositoryId,Maven 将尝试使用 id 'remote-repository'提取身份验证信息。