向maven中央仓库提交jar

从来都是从中央仓库下载jar,这次需要向中央仓库提交jar, 利用Sonatype OSSRH可以把jar等资源提交给Maven的中央仓库。

Sonatype OSSRH介绍:

Sonatype OSSRH使用Nexus 为开源项目提供仓库管理服务,该仓库就是所谓maven的中央仓库,OSSRH允许我们向Maven中央仓库提交二进制文件。

1:提交(deploy)开发版本的二进制文件(snapshorts)

2: 阶段性的发布版本

3:发布一个release,然后同步他们到中央仓库。

初始阶段

1:注册一个JIRA账号:https://issues.sonatype.org/secure/Signup!default.jspa

2:创建一个新工程的单:https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134

只有当这个jira单的状态我resolved时,才可以提交jar包

审查要求

1:提供javadoc和source

2: 使用gpg或者pgp对文件进行签名

3: pom.xml文件

4:正确的坐标:groupId,artifactId,version

   <groupId>com.sequoiadb</groupId>
   <artifactId>sequoiadb-driver</artifactId>
   <version>1.12</version>

5: projectName,description,url等。

   <name>${project.groupId}:${project.artifactId}</name>
   <description>SequoiaDB Driver Library</description>
   <url>https://github.com/SequoiaDB/SequoiaDB</url>

6: license 信息

 <licenses>
     <license>
       <name>The Apache License, Version 2.0</name>
       <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
     </license>
   </licenses>

7 : 开发者信息

   <developers>
    <developer>
      <name>linyoubing</name>
      <email>[email protected]</email>
      <organization>sequoiadb</organization>
      <organizationUrl>http://www.sequoiadb.com</organizationUrl>
    </developer>
  </developers>

8: SCM信息

   <scm>
      <connection>
         scm:git:https://github.com/SequoiaDB/SequoiaDB.git
      </connection>
      <developerConnection>
         scm:git:https://github.com/SequoiaDB/SequoiaDB.git
      </developerConnection>
      <url>https://github.com/SequoiaDB/SequoiaDB</url>
     <tag>v1.12</tag>
  </scm>

部署

可以使用多种方式部署,这是使用maven的方式

1:分布管理和认证:

我使用了maven部署插件,所以pom.xml中加入:

<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>

需要在maven_home/conf/settings.xml配置jira的账号和密码

<settings>
  <servers>
    <server>
      <id>ossrh</id>
      <username>your-jira-id</username>
      <password>your-jira-pwd</password>
    </server>
  </servers>
</settings>

2:配置生成javadoc和sources包的插件:

 <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>

3:GPG自动签名的插件:

    <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>

在settings.xml中配置gpg的签名 :(需要先用gpg来生成)

<settings>
  <profiles>
    <profile>
      <id>ossrh</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <properties>
        <gpg.executable>gpg2</gpg.executable>
        <gpg.passphrase>the_pass_phrase</gpg.passphrase>
      </properties>
    </profile>
  </profiles>
</settings>

4: 使用Profile

应该javadoc和source的jar包生成也需要使用gpg来签名,所以很浪费时间,而且这些执行通常都独立于标准构建流程,所以把他们移动到一个profile.

   <profiles>
   <profile>
    <id>release</id>
    <build>
        <plugins>
            <plugin>
               <groupId>org.sonatype.plugins</groupId>
               <artifactId>nexus-staging-maven-plugin</artifactId>
               <version>1.6.3</version>
               <extensions>true</extensions>
               <configuration>
                 <serverId>ossrh</serverId>
                 <nexusUrl>https://oss.sonatype.org/</nexusUrl>
                 <autoReleaseAfterClose>true</autoReleaseAfterClose>
               </configuration>
             </plugin>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-release-plugin</artifactId>
                 <version>2.5</version>
                 <configuration>
                   <autoVersionSubmodules>true</autoVersionSubmodules>
                   <useReleaseProfile>false</useReleaseProfile>
                   <releaseProfiles>release</releaseProfiles>
                   <goals>deploy</goals>
                 </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.0</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </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.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</version>
                <executions>
                    <execution>
                        <id>attach-javadocs</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
         </plugins>
    </build>
  </profile>
</profiles>

提交一个snapshot版本:

1:修改version加一个-SNAPSHOT, 执行 mvn clean deploy

发布一个release版本

1:修改version 不要加-SNAPSHOT,  可以手动修改,也可以执行

mvn versions:set -DnewVersion=1.2.3

2: 执行 mvn clean deploy -P release

原文:向maven中央仓库提交jar

相关:

上传Android或Java库到Maven central repository

发布Maven构件到中央仓

时间: 10-04

向maven中央仓库提交jar的相关文章

Dev 日志 | 如何将 jar 包发布到 Maven 中央仓库

摘要 Maven 中央仓库并不支持直接上传?jar?包,因此需要将 jar?包发布到一些指定的第三方?Maven?仓库,比如:Sonatype OSSRH 仓库,然后该仓库再将 jar?包同步到?Maven?,本文详细记录整个发布.同步过程. 注册一个 Sonatype 用户 进入地址:https://issues.sonatype.org/secure/Signup!default.jspa?注册 Sonatype 用户,Sonatype 通过 JIRA(JIRA 是 Atlassian 公司

喜大普奔,微软Microsoft JDBC Driver For SQL Server已发布到maven中央仓库

相信通过java和SQLServer开发应用的同学们都经历过如下类似的问题. 微软提供的JDBC官方驱动没有放置在Maven仓库中,这样如果你的Java应用需要访问SQL Server,你不得不下载sqljdbc4.jar至本地,然后每次都通过如下Maven命令安装这一驱动: mvn install:install-file -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.0 -Dpackaging=jar

Maven中央仓库地址整理

最近做项目的时候,一直发现常用的oschina maven源一直都没有反应,后面发现原来oschina竟然关闭了maven源服务,后面经同事推荐了阿里云的maven源,这速度杠杠的 Maven 中央仓库地址: 1.http://www.sonatype.org/nexus/  私服nexus工具使用2.http://mvnrepository.com/ (推荐) 3.http://repo1.maven.org/maven2 4.http://maven.aliyun.com/nexus/con

一份可以发布到MAVEN中央仓库的POM

今天在家折腾了一下怎么把Jar包发布到Maven的中央仓库,基本步骤百毒一堆,但基本上都是让引用sonatype的parent pom,个人感觉这份pom并不好用,于是自己写了一个,同时这个pom也是Spring MVC + Hibernate + Spring Security开发的基本pom,有兴趣的童鞋可以参考一下. <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt

libvirt最新版本未deploy到maven中央仓库

libvirt是虚拟化API. org.libvirt:libvirt:jar是其java实现. 官网:http://libvirt.org/ 在中央仓库搜索,其最高版本为0.4.7,可是现实情况这个不是最新版本(发现有人在用0.4.9版本) 通过查看其官网,在http://libvirt.org/java.html页面获得相关信息: MavenUp until version 0.4.7 the Java bindings were available from the central mav

maven中央仓库的配置在哪里?superpom是什么?中央仓库查找三方包

maven的superpom 每个项目都默认继承的pom 位置 $M2_HOME/lib/maven-model-builder.jar 使用tar -xvf解压后,grep -r central 搜索解压后的目录 中央仓库的默认值 id为central:地址为https://repo.maven.apache.org/maven2/ 中央仓库搜索三方包 https://search.maven.org/ 原文地址:https://www.cnblogs.com/shengulong/p/111

Maven本地仓库中jar包更新的依据

对于某个jar包,Maven如何判断远程仓库的jar包比本地仓库中的相应jar包要新呢?当我重新部署到私服上以后,下次执行maven命令的时候会自动下载最新的jar包,那么maven怎么知道要更新呢? 对于这个问题,在网上也没找到十分确切的答案. 所以,我大胆猜测,可能是通过时间戳或者校验和之类的来判断jar包的新旧程度. 猜想1:时间戳 当部署的时候,记录一个当前时间戳,之后我们下载到本地仓库的jar的时间戳就是这个jar包最后一次更新的时间戳.此后,重新打包部署这个jar包,时间戳也随之改变

maven中央仓库

<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> <mirror> <id>central</id

Maven 中央仓库

概述 当你建立一个 Maven 的项目,Maven 会检查你的 pom.xml 文件,以确定哪些依赖下载.首先,Maven 将从本地资源库获得 Maven 的本地资源库依赖资源,如果没有找到,然后把它会从默认的 Maven 中央存储库 http://repo1.maven.org/maven2/ 查找下载. 使用 MVNrepository 搜索:https://mvnrepository.com/ 原文地址:https://www.cnblogs.com/bjio/p/11681938.htm