`

向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>linyoubing@sequoiadb.com</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 jenkins的jar

    它简化了大型项目中的依赖关系管理,因为Maven可以通过中央仓库下载所需的库,并自动管理这些库的版本。 **Jenkins** Jenkins则是一个开源的持续集成(Continuous Integration, CI)服务器,最初是作为Hudson的分支...

    Java发布包到maven公共仓库完整教程

    Maven中央仓库是Java开发者广泛使用的资源库,它允许开发者共享和获取依赖。以下是一个详细的教程,教你如何将Java项目发布到Maven中央仓库。 **一、注册账号和提交申请** 1. **注册账号**: 首先,你需要访问...

    SSM+maven整合(所有jar包都是在maven上2017.8.30最新的包)

    本项目基于SSM进行了maven的整合,确保所有使用的jar包都是2017年8月30日在Maven中央仓库中的最新版本,以保证项目的先进性和兼容性。 首先,Spring框架(4.3.10.RELEASE版本)作为整个SSM架构的基础,负责依赖注入...

    详解如何将JAR包发布到Maven中央仓库

    发布JAR包到Maven中央仓库是一个必要的步骤,以便让全球的Java开发者能够方便地通过Maven构建系统引入你的库作为依赖。Maven中央仓库不直接支持上传,而是需要通过第三方仓库,如Sonatype OSSRH (Open Source ...

    maven repository

    如果你想让你的项目构件可供全球的Maven用户使用,你需要遵循一定的流程将它们发布到Maven中央仓库。这个过程包括在Sonatype Nexus Repository Manager上注册,签署构件,然后提交审核。 总的来说,Maven仓库是...

    maven-3.8.4 加各版本下载地址

    2. **项目依赖管理**: Maven的中央仓库存储了大量的开源库,开发者无需手动下载这些库,只需在POM.xml文件中声明依赖,Maven就会自动下载并管理这些依赖,解决了“jar地狱”问题。同时,Maven支持传递性依赖,意味着...

    Android-支持上传多种maven仓库配置相关全部自动生成

    Maven仓库是存储构建工件(如JAR、WAR等)的地方,分为本地仓库、远程仓库和中央仓库。本地仓库是个人计算机上的存储库,远程仓库则可以是公司内部的私有仓库或公开的第三方仓库。中央仓库是最主要的公共仓库,包含...

    Maven优雅的添加第三方Jar包的方法

    然而,有些时候,我们可能需要添加一些不在Maven中央仓库中的第三方Jar包,这时就需要采取特殊的方式来引入这些依赖。本文将详细介绍如何优雅地在Maven项目中添加第三方Jar包。 首先,当遇到Maven无法从中央仓库...

    利用github搭建个人maven仓库的方法步骤

    这些仓库可以是中央仓库(默认),也可以是自定义的远程仓库或本地仓库。在本例中,我们将使用GitHub作为远程仓库。 **部署到本地目录** 部署Maven项目到本地目录,你需要在`pom.xml`文件的`...

    apache-maven-3.5.0.rar

    通过在`pom.xml`文件中声明项目所需的jar包(即依赖),Maven会自动从Maven中央仓库下载这些依赖,避免了手动搜索和添加jar包的繁琐过程。这极大地提高了开发效率,同时也确保了所有团队成员使用的是同一版本的库。 ...

    Maven使用教程

    - 中央仓库是Maven内置的一个远程仓库,位于`http://repo1.maven.org/maven2/`。它是面向全球开发者的服务,包含了大量常用的开源库文件,是Maven项目最常用的远程仓库之一。 通过上述内容的介绍,我们可以看到...

    git-maven-nexus-hudson使用手册

    Git负责版本控制,Maven处理依赖管理,Nexus作为中央仓库优化构建,而Hudson/Jenkins则实现持续集成和自动化部署。这一套工具链不仅提升了开发效率,还保证了代码质量,是现代软件工程实践中的重要组成部分。对于想...

    maven

    Maven使用中央仓库来存储公共的开源库,但为了提高下载速度和减少网络拥堵,可以配置本地仓库和远程仓库镜像。通过settings.xml文件,开发者可以设置自己的Maven配置,包括仓库地址、用户名、密码等。 ** 使用Maven...

    使用 maven 进行协作开发

    Maven的中央仓库提供了一个庞大的第三方库集合,团队成员可以通过声明依赖,自动下载并管理这些库,避免了库版本不一致的问题。在`service_shop`项目中,可能有多个依赖,如Spring Boot、MyBatis等,它们在POM.xml...

    dubbox的jar包

    Dubbox的jar包并没有部署到maven的中央仓库,在Maven的中央仓库中可以查找到Dubbo的最终版本可能是2.5.3,阿里巴巴解散了Dubbo团队后由当当网维护此项目,并改名为dubbox 坐标不变,版本变更了,但是并没有提交到...

    maven&svn插件包

    Maven通过中央仓库下载项目所需的依赖库,同时也支持自定义本地或远程仓库。此外,Maven提供了多种内置的生命周期阶段和构建目标,如编译、测试、打包、部署等,极大地提高了开发效率。 【SVN】 Subversion(SVN)...

    Maven第二节

    本地仓库是每个开发者机器上的,远程仓库通常由团队或组织共享,中央仓库是 Maven 社区维护的公共库。 - **生命周期**:Maven 生命周期包括清理、编译、测试、打包、验证、集成测试、部署和站点等阶段,每个阶段...

    编译Hadoop源码需要的maven文件

    在编译Hadoop之前,Maven会根据配置从中央仓库拉取这些依赖。如果遇到网络问题或特定依赖无法找到,可能需要手动配置镜像源或者指定本地已经存在的依赖路径。 5. **编译步骤**:在源码目录下,使用以下Maven命令...

    Maven企业全栈开发讲解.rar

    当项目需要依赖时,Maven首先会在本地仓库查找,如果找不到则会从远程仓库下载,如中央Maven仓库(Central Repository)或其他自定义的远程仓库。 四、Maven生命周期与构建阶段 Maven拥有一个清晰的生命周期,分为...

    SVN管理软件+Maven小项目.rar_SVN管理软件+Maven小项目_svn

    6. **Maven仓库**:Maven使用中央仓库和其他远程仓库来存储和检索依赖,如Maven Central Repository。 结合这两个工具,开发者可以利用SVN进行版本控制,而Maven则负责项目的构建和依赖管理。在实际开发中,团队...

Global site tag (gtag.js) - Google Analytics