是否可以将工件上传到Nexus中的maven-central存储库?

时间:2018-03-09 16:01:16

标签: maven jar nexus nexus3 mvn-repo

我正在尝试将工件上传到Nexus中的“maven-central”存储库。我正在使用命令:

curl -v --user admin:admin123 --upload-file /path/myjar.jar  http://nexus-nexus3.apps.lab.ca/repository/maven-central/com/tp/mycompany/1.0/myjar.jar

我收到错误:

  

User-Agent:curl / 7.54.0   接受: /   内容长度:560414   期待:100-继续   HTTP / 1.1 400 Maven 2存储库的无效路径   日期:星期五,2018年3月9日15:54:10 GMT   服务器:Nexus / 3.9.0-01(OSS)

我尝试过sonatype docs的多个curl命令,但无济于事。我的问题是,这甚至可能吗?用户界面只能让我选择上传到maven-releases和nuget-hosted。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

我不确定你是否真的想通过maven-central将专有的罐子上传到开放的世界。

指定和使用托管专有jar的maven-central和公司特定存储库的组合是很常见的。你应该小心这个的影响。

上传maven-central上的工件......

要将您的工件上传到central-maven,请先提供here

的先决条件
  

为什么我们有要求?

     

为了确保中央存储库中可用组件的最低质量水平,我们已经建立了部署组件必须满足的许多要求。这允许您的用户从中央存储库中提供的元数据中找到有关组件的所有相关详细信息。

采取的一些观点:

  1. 提供Javadoc和Sources
  2. 使用GPG / PGP签名文件
  3. 项目名称,说明和网址
  4. 许可证信息
  5. 开发者信息
  6. SCM信息
  7. 完成示例POM 以下完整示例显示了项目和modelVersion的XML标头和必需元素以及示例元素和内容。

    <?xml version="1.0" encoding="UTF-8"?>
    <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/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
    
      <groupId>com.simpligility.training</groupId>
      <artifactId>ossrh-demo</artifactId>
      <version>1.0</version>
      <packaging>jar</packaging>
    
      <name>ossrh-demo</name>
      <description>A demo for deployment to the Central Repository via OSSRH</description>
      <url>http://github.com/simpligility/ossrh-demo</url>
    
      <licenses>
        <license>
          <name>The Apache Software License, Version 2.0</name>
          <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
        </license>
      </licenses>
    
      <developers>
        <developer>
          <name>Manfred Moser</name>
          <email>manfred@sonatype.com</email>
          <organization>Sonatype</organization>
          <organizationUrl>http://www.sonatype.com</organizationUrl>
        </developer>
      </developers>
    
      <scm>
        <connection>scm:git:git://github.com/simpligility/ossrh-demo.git</connection>
        <developerConnection>scm:git:ssh://github.com:simpligility/ossrh-demo.git</developerConnection>
        <url>http://github.com/simpligility/ossrh-demo/tree/master</url>
       </scm>
    
    ...
    
    </project>
    

答案 1 :(得分:1)

我假设默认情况下,您调用maven-central的存储库是一个镜像Maven Central的代理存储库。上传到代理存储库没有意义。您应该将工件上传到其他存储库,例如maven-releases,这是一个所谓的托管存储库......

您无法将工件上传到Nexus文档中编写的代理存储库。在Nexus中创建一个单独的托管存储库(默认情况下,已经有一些已定义的第三方),并将它们上传到...

你需要正确处理你的Nexus配置,你显然没有。您有一个存储库组,它将不同的存储库组合到您用来访问(使用)工件的逻辑存储库。

要正确访问nexus组,您应该具有如下所示的设置。给定的URL是在Nexus中配置以使用工件的存储库组的URL。

distributionManagement in Maven应该配置为使用两个单独的repos,而一个是发布存储库,另一个是SNAPSHOT存储库。

<settings>
  <mirrors>
    <mirror>
      <!--This sends everything else to /public -->
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <url>http://localhost:8081/nexus/content/groups/public</url>
    </mirror>
  </mirrors>
  <profiles>
    <profile>
      <id>nexus</id>
      <!--Enable snapshots for the built in central repo to direct -->
      <!--all requests to nexus via the mirror -->
      <repositories>
        <repository>
          <id>central</id>
          <url>http://central</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </repository>
      </repositories>
     <pluginRepositories>
        <pluginRepository>
          <id>central</id>
          <url>http://central</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>
  <activeProfiles>
    <!--make the profile active all the time -->
    <activeProfile>nexus</activeProfile>
  </activeProfiles>
</settings>