首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何手动将JAR发布到maven中心?

如何手动将JAR发布到maven中心?
EN

Stack Overflow用户
提问于 2015-03-04 04:44:42
回答 2查看 13.8K关注 0票数 40

我已经创建了一个开源项目,我希望将它发布到maven central,这样用户就可以通过在pom中引用库来使用它。就像这样:

代码语言:javascript
运行
复制
<dependency>
    <groupId>in.ksharma</groupId>
    <artifactId>log4j-weblayout</artifactId>
    <version>0.0.1-BETA</version>
</dependency>

我已经找到了几个在线教程,但其中一些已经过时,有些建议自动化整个过程,从而公开地使其复杂化。

例如,一个教程建议为您的github帐户创建SSH密钥,并让maven在推到maven中心时自动创建一个git标记。虽然这是有用的,但没有必要开始。

另一个例子是,试图通过maven直接发布它也会产生某种错误:

代码语言:javascript
运行
复制
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中心的方法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-04 04:44:42

这个答案假设您有一个基于maven的项目,并且它处于一个可打包的状态。mvn package应该没有任何错误地运行。

当发布到maven central时,您将需要使用一个组id来标识您上传的所有工件。有点像in.ksharma。您还需要对您的工件进行签名,以便用户能够验证他们是否真的来自您。

因此,首先转到sonatype jira和创建一个帐户,然后创建一个jira问题,以获得您的组id的批准。有点像

现在生成一个用于对工件进行签名的gpg键盘

代码语言:javascript
运行
复制
$ gpg --gen-key

~/.m2/settings.xml中定义此键

代码语言:javascript
运行
复制
<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

还增加:

代码语言:javascript
运行
复制
<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签名。它会给你这样的东西:

代码语言:javascript
运行
复制
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

现在将它们打包到一个罐子中:

代码语言:javascript
运行
复制
jar -cvf bundle.jar log4j-weblayout-0.0.1-BETA*

转到声呐型尼克斯并使用您的凭据登录。转到分期、上传和上传您的包。

然后转到分期存储库部分,选择您的存储库并单击release (更多帮助这里)。关于jira问题的评论,您已经发布了工件并等待了一段时间。

现在,您的用户可以从中央储存库中搜索和使用工件:

票数 26
EN

Stack Overflow用户

发布于 2017-03-21 02:56:41

1)创建您的Jira帐户:注册Sonatype

2)创建一个新的项目票据(以声明您的工作区):创建新的项目票证

3)生成PGP签名

代码语言:javascript
运行
复制
gpg2 --gen-key
....
gpg: key YOUR_KEY_ID marked as ultimately trusted
...

4)分发您的公钥的

代码语言:javascript
运行
复制
gpg2 --keyserver hkp://pool.sks-keyservers.net --send-keys YOUR_KEY_ID

将您的密钥分发到多个服务器以加快同步过程(pgp.mit.edu,keyserver.ubuntu.com.)

5)更新你的~.m2/setings.xml

代码语言:javascript
运行
复制
<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

代码语言:javascript
运行
复制
<?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会向你询问你的密码

代码语言:javascript
运行
复制
mvn clean deploy

8)评论你的吉拉票

这将触发组id与中央同步。

我促进了我的第一次释放。谢谢。

资源:

OSSRH指南

与Maven一起部署

PGP签名

票数 40
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28846802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档