我已经创建了一个开源项目,我希望将它发布到maven central,这样用户就可以通过在pom中引用库来使用它。就像这样:
<dependency>
<groupId>in.ksharma</groupId>
<artifactId>log4j-weblayout</artifactId>
<version>0.0.1-BETA</version>
</dependency>我已经找到了几个在线教程,但其中一些已经过时,有些建议自动化整个过程,从而公开地使其复杂化。
例如,一个教程建议为您的github帐户创建SSH密钥,并让maven在推到maven中心时自动创建一个git标记。虽然这是有用的,但没有必要开始。
另一个例子是,试图通过maven直接发布它也会产生某种错误:
mvn release:clean release:prepare release:perform -B -e | tee maven-central-deploy.log给予:
svn:'/home/kshitiz/Documents/workspaces/ggts/log4j-weblayout/pom.xml‘:E155007不是一个工作副本
当您第一次做某件事时,首先手动执行,然后将其自动化,这通常会有所帮助。
,什么是最基本、最基本的将一个罐子放在maven中心的方法?
发布于 2015-03-04 04:44:42
这个答案假设您有一个基于maven的项目,并且它处于一个可打包的状态。mvn package应该没有任何错误地运行。
当发布到maven central时,您将需要使用一个组id来标识您上传的所有工件。有点像in.ksharma。您还需要对您的工件进行签名,以便用户能够验证他们是否真的来自您。
因此,首先转到sonatype jira和创建一个帐户,然后创建一个jira问题,以获得您的组id的批准。有点像这。
现在生成一个用于对工件进行签名的gpg键盘:
$ gpg --gen-key在~/.m2/settings.xml中定义此键
<profiles>
<profile>
<id>sonatype-oss-release</id>
<properties>
<gpg.keyname>B63EFB4D</gpg.keyname>
<gpg.passphrase>****</gpg.passphrase>
<gpg.defaultKeyring>true</gpg.defaultKeyring>
<gpg.useagent>true</gpg.useagent>
<gpg.lockMode>never</gpg.lockMode>
<gpg.homedir>/home/kshitiz/.gnupg</gpg.homedir>
</properties>
</profile>
</profiles>修改项目的pom文件,并将-SNAPSHOT追加到您的版本中。于是0.0.1-BETA变成了0.0.1-BETA-SNAPSHOT。否则maven会抱怨
错误未能在项目log4j-weblayout上执行目标org.apache.maven.plugins:maven-release-plugin:2.4.2:prepare (默认-cli):在反应堆项目列表中没有快照项目。->帮助1
还增加:
<parent>
<groupId>org.sonatype.oss</groupId>
<artifactId>oss-parent</artifactId>
<version>9</version>
</parent>这个父pom为您提供了一些现成的功能,比如配置maven-gpg-plugin来对JAR签名。
现在运行mvn release:clean release:prepare来生成工件和gpg签名。它会给你这样的东西:
log4j-weblayout-0.0.1-BETA-javadoc.jar.asc
log4j-weblayout-0.0.1-BETA-sources.jar.asc
log4j-weblayout-0.0.1-BETA.pom.asc
log4j-weblayout-0.0.1-BETA.pom
log4j-weblayout-0.0.1-BETA.jar.asc
log4j-weblayout-0.0.1-BETA-javadoc.jar
log4j-weblayout-0.0.1-BETA-sources.jar
log4j-weblayout-0.0.1-BETA.jar现在将它们打包到一个罐子中:
jar -cvf bundle.jar log4j-weblayout-0.0.1-BETA*转到声呐型尼克斯并使用您的凭据登录。转到分期、上传和上传您的包。

然后转到分期存储库部分,选择您的存储库并单击release (更多帮助这里)。关于jira问题的评论,您已经发布了工件并等待了一段时间。
现在,您的用户可以从中央储存库中搜索和使用工件:

发布于 2017-03-21 02:56:41
1)创建您的Jira帐户:注册Sonatype
2)创建一个新的项目票据(以声明您的工作区):创建新的项目票证
3)生成PGP签名
gpg2 --gen-key
....
gpg: key YOUR_KEY_ID marked as ultimately trusted
...4)分发您的公钥的
gpg2 --keyserver hkp://pool.sks-keyservers.net --send-keys YOUR_KEY_ID将您的密钥分发到多个服务器以加快同步过程(pgp.mit.edu,keyserver.ubuntu.com.)
5)更新你的~.m2/setings.xml
<settings>
<servers>
<server>
<id>ossrh</id>
<username>jira_username</username>
<password>jira_password</password>
</server>
</servers>
<profiles>
<profile>
<id>ossrh</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<gpg.executable>gpg2</gpg.executable>
<gpg.passphrase>your_key_passphrase</gpg.passphrase>
</properties>
</profile>
</profiles>
</settings>6)更新项目pom.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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.sonatype.oss</groupId>
<artifactId>oss-parent</artifactId>
<version>9</version>
</parent>
<groupId>xxx.xxx</groupId>
<artifactId>xxx</artifactId>
<version>0.1</version>
<distributionManagement>
<snapshotRepository>
<id>ossrh</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>ossrh</id>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.7</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>true</autoReleaseAfterClose>
</configuration>
</plugin>
</plugins>
</build>
</project>7)运行Maven
Maven会向你询问你的密码
mvn clean deploy8)评论你的吉拉票
这将触发组id与中央同步。
我促进了我的第一次释放。谢谢。
资源:
OSSRH指南
与Maven一起部署
PGP签名
https://stackoverflow.com/questions/28846802
复制相似问题