Maven执行deploy命令报错

/ Markbug / 没有评论 / 313浏览

在开发项目时,向私服中部署包时,报了下面的错误:


Deployment failed: repository element was not specified in the POM inside distributionManagement element or in -DaltDeploymentRepository=id::layout::url parameter

提示已经很明显了,就是我们项目中的pom文件中没有添加distributionManagement标签,也就是私服中的地址。具体配置哪下:

	<distributionManagement>
        <repository>
            <id>releases</id>
            <name>Nexus Release Repository</name>
            <url>http://192.168.0.210:8081/nexus/content/repositories/releases/</url>
        </repository>
        <snapshotRepository>
            <id>snapshots</id>
            <name>Nexus Snapshot Repository</name>
            <url>http://192.168.0.210:8081/nexus/content/repositories/snapshots/</url>
        </snapshotRepository>
    </distributionManagement>

上述中的配置是我公司的私服地址,所以是内部ip,外部访问不到。配置时,需要修改成自己公司的私服地址。并且我们发现在distributionManagement标签叶配置了两个私服地址,这又是为什么呢?


这是因为在Maven中的仓库主要分为两种,实际上比较多。它们分别是:snapshot快照仓库和release发布仓库。snapshot快照仓库用于保存开发过程中的不稳定版本,release发布仓库则是用来保存稳定的版本。Maven在发布时会根据版本中是否包括SNAPSHOT来判断是快照版本还是发布版本。如果是快照版本,那么Maven在执行deploy命令时会自动发布到快照仓库中,否则则会发布到发布仓库中。


除此之外,要想成功执行deploy命令,还需要在Maven中的settings.xml中配置私服的用户名及密码才可以。具体配置如下:


<servers>
    <server>
      <id>deploymentRepo</id>
      <username>repouser</username>
      <password>repopwd</password>
    </server>
  </servers>