【问题标题】:Maven won't deploy on Sonatype Nexus RepositoryMaven 不会部署在 Sonatype Nexus Repository 上
【发布时间】:2014-11-25 09:38:13
【问题描述】:

[链接被替换为 [http] 因为 StackOverflow 不允许我使用超过 2 个链接...]

我已经安装了 Apache Maven 3.2.3 ([http]maven.apache.org/download.cgi?Preferred=ftp://mirror.reverse.net/pub/apache/),它已经下载了所有的核心插件。

然后我在我的 XAMPP tomcat 服务器上安装了 Sonatype Nenus OSS ([http]www.sonatype.org/nexus/go/) 作为 WAR 应用程序。

一切都设置得很好并且工作正常。 我在这里的唯一目标是测试将文件从本地 Maven 部署到我的 Nexus 存储库。

这是我的 POM 文件项目:

<project xmlns="..."
     xmlns:xsi="..."
     xsi:schemaLocation="...">
<modelVersion>4.0.0</modelVersion>

<groupId>groupA</groupId>
<artifactId>artifactA</artifactId>
<version>1.0.0</version>

<distributionManagement>
  <repository>
    <id>releases</id>
    <url>[http]localhost:8080/nexus-2.9.2-01/content/repositories/releases</url>
  </repository>
</distributionManagement>

</project>

这是我的 Maven 配置文件:settings.xml

<settings xmlns="..."
xmlns:xsi="..."
xsi:schemaLocation="...">

<servers>
  <server>
   <id>releases</id>
   <username>deployment</username>
   <password>deployment123</password>
  </server>
</servers>

提供的帐户是默认帐户,可在 Nexus GUI 中使用。 我的 Nexus 存储库“发布”配置如下: [http]i.stack.imgur.com/Nh3dO.png

当我使用以下命令时:

   mvn deploy

或以下:

   mvn deploy:deploy

就我而言,这几乎是一样的...... Maven告诉我: [http]i.stack.imgur.com/2vBNx.png

而 [Help 1] 只提供“查看插件文档”。并且错误消息告诉我“POM 文件中未指定存储库元素”,但实际上是...

我真的看不出我错过了什么:/ 感谢您的帮助

【问题讨论】:

  • 你检查help:effective-pom了吗?您是否尝试像错误消息末尾提到的那样在 cmd 行中明确指定 repo?
  • 它在抱怨 元素中缺少 部分(奇怪的是你的 POM 看起来是正确的)。仔细检查你的真实 POM,如果可能的话,把它完整地发布出来。

标签: apache maven deployment repository nexus


【解决方案1】:

谢谢大家的回答。我真的不知道它为什么会起作用,但使用这些文件是有效的:

ArtifactA POM 文件:

<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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>groupA</groupId>
    <artifactId>artifactA</artifactId>
    <version>1.2.4</version>

    <dependencyManagement>
        <dependencies>
        </dependencies>
    </dependencyManagement>

    <distributionManagement>
        <repository>
            <id>nexus</id>
            <name>Nexus Test Repository</name>
            <url>http://localhost:8080/nexus-2.9.2-01/content/repositories/releases</url>
        </repository>
    </distributionManagement>

</project>

ArtifactB POM 文件:

<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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>groupA</groupId>
    <artifactId>artifactB</artifactId>
    <version>1.0.0</version>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>groupA</groupId>
                <artifactId>artifactA</artifactId>
                <version>1.2.4</version>
                <type>zip</type>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <distributionManagement>
        <repository>
            <id>nexus</id>
            <name>Nexus Test Repository</name>
            <url>http://localhost:8080/nexus-2.9.2-01/content/repositories/releases</url>
        </repository>
    </distributionManagement>

</project>

Maven 设置文件:

    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                      http://maven.apache.org/xsd/settings-1.0.0.xsd">

  <servers>
    <server>
      <id>nexus</id>
      <username>admin</username>
      <password>admin123</password>
    </server>
  </servers>

  <mirrors>
    <mirror>
      <id>nexus</id>
      <name>Nexus Test Repository</name>
      <url>http://localhost:8080/nexus-2.9.2-01/content/repositories/releases</url>
      <mirrorOf>*,!central</mirrorOf>
    </mirror>
  </mirrors>

</settings>

部署脚本:

mvn deploy:deploy-file \
-Dfile=artifactA_package.zip \
-Dpackaging=zip \
-DpomFile=pomA1.2.4.xml \
-Durl=http://localhost:8080/nexus-2.9.2-01/content/repositories/releases \
-DrepositoryId=nexus

mvn deploy:deploy-file \
-Dfile=artifactB_package.zip \
-Dpackaging=zip \
-DpomFile=pomB1.0.0.xml \
-Durl=http://localhost:8080/nexus-2.9.2-01/content/repositories/releases \
-DrepositoryId=nexus

希望对下一个有帮助:)

【讨论】:

    【解决方案2】:

    我将 wagon-webdav-jackrabbit 插件与您的配置等结合使用。它使 Maven 能够将工件和文件部署到启用 WebDAV 的服务器。

    http://maven.apache.org/wagon/wagon-providers/wagon-webdav-jackrabbit/

    将此粘贴​​到您的 pom.xml 中

    <build>
            <extensions>
                <extension>
                    <groupId>org.apache.maven.wagon</groupId>
                    <artifactId>wagon-webdav-jackrabbit</artifactId>
                    <version>2.4</version>
                </extension>
            </extensions>
        </build>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-05
      • 2016-05-11
      • 2016-10-19
      • 1970-01-01
      • 1970-01-01
      • 2017-12-19
      • 2013-03-06
      • 1970-01-01
      相关资源
      最近更新 更多