我创建了一个开源项目,希望将其发布到maven central,以便用户只需在POM中引用它就可以使用该库。例如:
<dependency>
<groupId>in.ksharma</groupId>
<artifactId>log4j-weblayout</artifactId>
<version>0.0.1-BETA</version>
</dependency>
我找到了几个在线教程,但其中一些已经过时,一些建议自动化整个过程,从而公开复杂化它。
例如,一篇教程建议为github帐户创建SSH键,并让maven在推送到maven Central时自动创建一个git标记。虽然这是有用的,但没有必要开始。
另一个例子,试图直接通过maven发布它也会给出某种错误:
mvn release:clean release:prepare release:perform -B -e | tee maven-central-deploy.log
给出:
SVN:E155007:“/home/kshitiz/documents/workspaces/ggts/log4j-weblayout/pom.xml”不是工作副本
当你第一次做某件事时,首先手动做,然后自动做通常会有帮助。
在maven Central中放置JAR的最基本、最基本的方法是什么?
这个答案假设您有一个基于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会抱怨:
[错误]无法执行目标org.apache.maven.plugins:maven-release-plugin:2.4.2:在项目log4j上准备(default-cli)-weblayout:reactor projects列表中没有快照项目。->[帮助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*
转到Sonatype Nexus并使用您的凭据登录。转到staging upload并上载您的包。
然后转到staging repositories部分,选择您的存储库并单击release(此处提供更多帮助)。关于jira的问题,请评论您已经发布了该工件,并等待一段时间。
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/settings.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 deploy
8)评论您的Jira票
这将触发与central的组ID同步。
我已经宣传了我的第一个版本。多谢了。
资源:
OSSRH指南
使用Maven部署
PGP签名
我想将jar发布到Nexus快照存储库。 如果你知道如何实现,我很想知道。 我将从詹金斯的工作中发布jar。 我想发布到快照存储库,但我无法调查/实现各种事情。 根据我的研究,似乎已经有了下面的Jenkins插件 null 卷曲时的错误信息如下所示。 谢谢你。
我正在学习如何使用Java Spring框架,并开始尝试Spring集成。我试图使用Spring集成将我的应用程序连接到MQTT代理以发布和订阅消息,但我很难找到将消息手动发布到出站通道的方法。如果可能的话,我想专门使用java代码中的符号来构建它,而不是使用定义bean和其他相关配置的xml文件。 在每个示例中,我都看到手动发布消息的解决方案似乎是使用MessagingGateway接口,然后使
我正在尝试使用WP REST API将数据从Handontable发布到WordPress。这就是我所尝试的: 我得到这个回应: {"code":"empty_content "," message ":"内容、标题、摘录为空。","数据":{ "状态":400}} 但是,JSON.stringify(hot.getDataAtRow(0))的输出如下所示: 我尝试了手动方式,通过这样设置数据,它
问题内容: 我试图弄清楚如何将对象从表单发布到Web api服务。在我的控制器中,我定义了一个想要向其添加输入值的模型。 在我的输入字段中,我将它们绑定起来,例如: 在提交表单时,将这两个字段传递给我的服务并提交给我的WebApi 我已经通过两种方式尝试了此提交: 并且也如下,不声明参数 在webAPI中,我为帖子设置了一个方法 ReportLabel(dto)的定义如下: 我遇到的问题是,当我从
本文向大家介绍Python如何将消息发布到RabbitMQ,包括了Python如何将消息发布到RabbitMQ的使用技巧和注意事项,需要的朋友参考一下 示例 从导入库开始。 接下来,我们需要打开与RabbitMQ服务器的连接。 之后,我们需要建立一个频道。每个连接可以有多个通道,通常在执行多线程任务时,建议(但不是必需)每个线程一个。 建立频道后,我们就可以开始准备信息了。 现在,我们可以通过简单
null 当我运行./gradlew artifactoryPublish时,它将记录: 尝试从其他生成加载插件。Gradle: 带设置。分级: 导致此错误: 我希望在运行ArtiFactoryPublish时,将publishToMavenLocal创建的所有工件发布到Artifactory。如果artifactoryPublish是错误的工具,我愿意接受它的替代方法。 如何将Gradle插件发