当前位置: 首页 > 知识库问答 >
问题:

Maven不会在Sonatype Nexus存储库上部署

戚翰飞
2023-03-14

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

我已经安装了Apache Maven 3.2.3([超文本传输协议]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配置文件:设置.xml

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

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

提供的帐户是默认的,它从Nexus GUI工作。我的Nexus存储库“releases”配置如下:[http]I . stack . imgur . com/nh3do . png

当我使用以下命令时:

   mvn deploy

或以下内容:

   mvn deploy:deploy

就我而言,这几乎是一样的…马文告诉我:[超文本传输协议]i.stack.imgur.com/2vBNx.png

[帮助1]只告诉我“查看插件留档”。错误消息告诉我“POM文件中没有指定存储库元素”,但它实际上是…

我真的不知道我错过了什么:/谢谢你的帮助

共有2个答案

单于浩邈
2023-03-14

我将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>
万俟飞语
2023-03-14

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

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

希望它能帮助下一个:)

 类似资料:
  • 我有一个小型开源图书馆的分叉,我正在github上工作。我想通过maven让其他开发人员可以使用它,但是我不想运行我自己的Nexus服务器,因为它是一个分叉,所以我不能轻松地将它部署到oss.sonatype.org. 我想做的是将它部署到github,这样其他人就可以使用maven访问它。最好的方法是什么?

  • 我运行一个开源库,正在考虑让它完全接受Maven并将其上传到中央存储库,以便人们可以轻松地将其添加到他们的项目中。 问题在于,它依赖于几个较旧的库,这些库在任何 Maven 存储库中都不存在。目前,这意味着pom文件必须使用依赖项范围。我还阅读了有关为项目创建本地存储库以安装第三方库的信息。 但是,我的印象是,当我将库部署到 Maven 存储库时,这两种方法都不能很好地工作。也就是说,如果它依赖于

  • 问题内容: 我的Maven配置有一个小问题。此处的所有其他问题和答案都不能解决我的问题,因此,我开始了一个新问题。 我的问题是,我的Maven没有使用本地存储库。它总是从远程存储库中获取工件。 当下载工件或构建项目时,它将安装在本地存储库中,因此路径正确。 问题是:当我构建一个SNAPSHOT项目时,它仅安装在本地存储库中(应该是这样,不想每次都将其发布在我的关系上)。当我在pom.xml中构建另

  • 我的Maven配置有一个小问题。这里所有其他的问题和答案都没有解决我的问题,所以我要开始一个新的问题。 我的问题是,我的Maven没有使用本地存储库。它总是从远程存储库中获取工件。 当下载工件或构建项目时,它被安装在本地存储库中,因此路径是正确的。 问题是:当我构建一个快照项目时,它只安装在本地存储库中(应该是这样的,不要每次都在我的nexus上发布)。当我构建另一个项目时,在pom.xml中有前

  • 我在POM. xml中引用了一个存储库来将ojdbc.jar添加到我的项目中,但是Maven(我使用STS插件)一直告诉我它找不到jar。 我在下面显示了我的存储库和jar依赖关系xml. 有人知道为什么找不到这个罐子吗?这是我的POM。xml设置不正确? 注意vaadin回购工作正常,因为vaadin罐被正确地添加到我的项目中。 下面是http://mvnrepository.com/artif

  • 我刚刚使用Maven,我需要从一个Ant项目上传一些库。为了开发这个任务,我有一个文件夹,其中包含许多“pom.xml”文件,这些文件引用了我希望使用Maven在Eclipse中添加到我的项目中的jar,还有另一个xml文件,即Ant项目本身。 欢迎所有想法。谢谢