将项目迁移到Maven Central

7
我管理许多Maven项目。其中大部分都部署到我们内部的Maven仓库。现在我想开始将一个项目发布到Maven Central。到目前为止,我有一个父POM,指定了我们内部仓库的distributionManagement。将这些信息部署到Maven Central没有意义。
对于我的内部项目,我应该如何指定distribution management?我应该为内部项目拥有一个单独的父POM组-internal吗?
Sonatype提到了一种直接部署到他们的存储库的方法,但他们建议使用自己的父POM(oss-parent)。查看mvnrepository.org上使用的项目时,我找不到任何以oss-parent作为父级的项目。大多数项目是手动将其构件部署到Sonatype的吗?他们在哪里以及如何首先部署它们?
太多问题了!我很惊讶这是如此复杂...
更新:事实证明我确定的一些项目确实使用oss-parent。只是因为它是父级的父级而隐藏了起来。

1
上次我读到的时候,我相信你必须向他们提出申请,才能将你的jar文件放入Maven Central。但是你关于Sonatype OSS存储库的说法是正确的,只要你满足某些先决条件,他们允许你直接将其部署到他们的存储库中。如果你要将某个库放在公共领域中,最好使用Apache 2或类似的许可证。你准备好向世界展示你的代码了吗?如果是这样,将代码托管在Github、SourceForge或Google Code等地方可能是有意义的。 - Kalpak Gadre
代码对全世界开放。我现在正在尝试将二进制文件提供给全世界。 - schmmd
2个回答

9
一旦设置完成,您可以直接将预发布版本快照版本部署到Sonatype的OSS仓库。 然后可以通过Sonatype的Nexus UI发布预发布版本
要为您的应用程序创建一个存储库文件夹,以便您可以部署,您需要 在Sonatype的JIRA上打开一个工单, 并提供一份您将要部署的开源项目的参考。这个过程非常顺利,如果您没有提供所有必要的信息,Sonatype将会为您提供帮助。
虽然乍一看似乎很少有项目将oss-parent作为父级,但是当你向上浏览POM树时,它们经常会出现。例如,Google Guava有一个名为guava-parent的父项,它的父项是oss-parent。一旦您的项目拥有了oss-parent并且存储库已经配置好,您就可以使用mvn deploy或者mvn release:prepare release:perform轻松地部署SNAPSHOT和发布版本。
虽然这看起来令人不知所措,但只需按照第一次操作的步骤逐步进行,就可以很容易地理解。

6

我已经阅读了那份文件。能否详细说明何时使用OSS parent是有意义的,何时不是?没有OSS parent的项目如何部署到Maven中央仓库?如果pom.xml中没有distributionManagement,它们如何在内部部署? - schmmd
只需简单地创建自己的distributionManagement区域(http://search.maven.org/#artifactdetails|com.soebes.smpp|smpp|0.3|pom)。没有distributionManagement,您无法在内部部署...最好也有内部repo管理器...如果您有一个仅在内部使用但将部署到maven中央的项目,则此项目需要自己的distributionManagement区域,可以使用不同的父级,但要小心,不应该依赖于不在maven中央的东西。 - khmarbaise
2
你所提到的文档似乎神奇地消失了,没有明确的继任者。 - Mike Braun
@MikeBraun 看起来信息现在在这里:(http://central.sonatype.org/pages/ossrh-guide.html) - itsadok

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接