未在 distributionManagement 元素内的 POM 或 -DaltDep loymentRepository=id::layout::url 参数中指定存储库元素

Posted

技术标签:

【中文标题】未在 distributionManagement 元素内的 POM 或 -DaltDep loymentRepository=id::layout::url 参数中指定存储库元素【英文标题】:repository element was not specified in the POM inside distributionManagement element or in -DaltDep loymentRepository=id::layout::url parameter 【发布时间】:2015-01-25 00:13:50 【问题描述】:

我在部署时遇到问题,这是我收到的错误消息:

[INFO]
[INFO] --- maven-deploy-plugin:2.7:deploy (default-deploy) @ core ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.296 s
[INFO] Finished at: 2014-11-26T17:05:00+02:00
[INFO] Final Memory: 13M/244M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:
deploy (default-deploy) on project core: Deployment failed: repository element w
as not specified in the POM inside distributionManagement element or in -DaltDep
loymentRepository=id::layout::url parameter -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e swit
ch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please rea
d the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionE
xception

我查看了互联网上的一些资源,但没有一个适合我的案例。我认为它与我的pom.xml 有关,所以这里是它的相关部分:

<build>
        <plugins>
              <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>2.3.2</version>
                    <configuration>
                         <source>1.7</source>
                         <target>1.7</target>
                    </configuration>
              </plugin>
        </plugins>
  </build>

  <repositories>
        <repository>
              <id>repository.springframework.maven.release</id>
              <name>Spring Framework Maven Release Repository</name>
              <url>http://maven.springframework.org/release</url>
        </repository>
        <repository>
              <id>Appid</id>
              <name>AppName</name>
              <url>http://IPaddress/nexus/content/repositories/Myapps/</url>
        </repository>
  </repositories>

您认为问题可能是什么?提前致谢。

【问题讨论】:

您必须定义要部署的存储库,see reference 【参考方案1】:

您应该在pom.xml 的分发管理部分中包含要部署的存储库。

例子:

<project xmlns="http://maven.apache.org/POM/4.0.0"   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                      http://maven.apache.org/xsd/maven-4.0.0.xsd">
...   
<distributionManagement>
    <repository>
      <uniqueVersion>false</uniqueVersion>
      <id>corp1</id>
      <name>Corporate Repository</name>
      <url>scp://repo/maven2</url>
      <layout>default</layout>
    </repository>
    ...
</distributionManagement>
...
</project>

见Distribution Management

【讨论】:

我们可以在 /.m2 目录下的 settings.xml 文件中准确配置这个吗?【参考方案2】:

在您的 pom.xml 中,您应该将 distributionManagement 配置添加到部署位置。

在以下示例中,我使用 文件系统作为位置。

<distributionManagement>
       <repository>
         <id>internal.repo</id>
         <name>Internal repo</name>
         <url>file:///home/thara/testesb/in</url>
       </repository>
   </distributionManagement>

您可以在部署时使用以下命令添加另一个位置(但为避免上述错误,您应该至少配置 1 个存储库):

mvn deploy -DaltDeploymentRepository=internal.repo::default::file:///home/thara/testesb/in

【讨论】:

【参考方案3】:

通过在主 pom.xml 中的 distributionManagement 选项卡下添加存储库 url 解决了该问题。

Jenkin maven 目标:clean deploy -U -Dmaven.test.skip=true

<distributionManagement>
    <repository>
        <id>releases</id>
        <url>http://domain:port/content/repositories/releases</url>
    </repository>
    <snapshotRepository>
        <id>snapshots</id>
        <url>http://domain:port/content/repositories/snapshots</url>
    </snapshotRepository>
</distributionManagement>

【讨论】:

以上是关于未在 distributionManagement 元素内的 POM 或 -DaltDep loymentRepository=id::layout::url 参数中指定存储库元素的主要内容,如果未能解决你的问题,请参考以下文章

Maven --- <distributionManagement>标签

环境配置distributionManagement

mavenmaven IDEA 设置 上传jar 包 distributionManagement

maven pom distributionManagement snapshot快照库和release发布库

MavenMaven之如何部署项目生成的Maven构建到远程仓库

MAVEN