ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

发布到maven center仓库

2021-11-16 11:35:06  阅读:189  来源: 互联网

标签:git center 仓库 maven https org com example


发布到maven center仓库

官方说明:

为了让Maven用户利用项目生成的构件,必须将它们部署到maven center repository。 许多开源项目希望允许使用Maven构建的项目用户透明地访问项目的构件。 为了实现这一点,项目应该将其构件部署到中央存储库。

简单来说就是将我们自己写好的文件上传到maven中央仓库,其他人想用就可以通过依赖的方式去引入。

需求:

  1. releases: Only releases can be uploaded to the Central Repository, that means files that won’t change and that only depend on other files already released and available in the repository,(只能是正式包,并且上传的文件只能依赖于中央仓库里面含有的依赖)

  2. javadoc and sources for IDE lookup(提供Java文档和源代码,遵循Maven存储库格式),

    格式命名:artifactId-version-classifier.packaging

    例如:

    example-application-1.4.7-sources.jar

    example-application-1.4.7-javadoc.jar

  3. PGP signature(一种签名,具体啥的还得百度下才知道),

    所有部署的文件都需要使用GPG/PGP进行签名,每个文件都必须包含一个包含签名.asc文件。

    例如:

    example-application-1.4.7-sources.jar.asc

    example-application-1.4.7-javadoc.jar.asc

  4. minimum POM information: There are some requirements for the minimal information in the POMs that are in the Central Repository, see here(为了保证能用,对POM文件的一些要求),

    Sufficient Metadata

    作为部署的一部分,必须使用 Apache Maven来定义和构建项目对象模型

    Correct Coordinates

    按照groupId,artifactId,version(必须为正式包)来确定该Jar包在maven中央仓库的位置

    例如:

    com.example.applications

    example-application

    1.4.7

    Project Name, Description and URL

    为了提高代码的可读性,必须提供名字,描述和URL

    这里是项目名称哦 一般用 p r o j e c t . g r o u p I d : {project.groupId}: project.groupId:{project.artifactId}

    项目的简单描述哦

    http://www.example.com/example-application

    License Information

    必须要有许可证,就像你去别人家住,没有别人的许可,肯定也是住不了的哈

    例如:

    ​ The Apache License, Version 2.0

    ​ http://www.apache.org/licenses/LICENSE-2.0.txt

    Developer Information

    必须提供一个开发人员信息,出问题了可以立马联系到

    例如:

    ​ Manfred Moser

    ​ manfred@sonatype.com

    ​ Sonatype

    ​ http://www.sonatype.com

    SCM Information

    必须接入版本控制系统,git,svn…

    例如接入Git

    scm:git:git://github.com/simpligility/ossrh-demo.git scm:git:ssh://github.com:simpligility/ossrh-demo.git http://github.com/simpligility/ossrh-demo/tree/master

    Fully configured example projects including metadata as well as dependencies and Maven build configuration are, for example, available at

    • https://github.com/simpligility/ossrh-demo/blob/master/pom.xml
    • https://bitbucket.org/simpligility/ossrh-pipeline-demo/src
  5. coordinates: Picking the appropriate coordinates for your project is important. See the guidelines here, particularly on groupId and domain ownership.(坐标,参考上面第4点的Correct Coordinates)

Publishing your artifacts to the Central Repository

Approved Repository Hosting

必须使用官方认证的库

Other Projects

The easiest way to upload another project is to use the Open Source Software Repository Hosting (OSSRH), which is an approved repository provided by Sonatype for any OSS Project that want to get their artifacts into the Central Repository.

使用托管库上传,maven中央仓库每隔一段时间就去托管库更新

一个简单的例子

  1. pom.xml 中必须包括:name、description、url、licenses、developers、scm 等基本信息
<distributionManagement>
    <repository>
        <id>repository</id>
        <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
    </repository>
    <snapshotRepository>
        <id>ossrh</id>
        <url>https://oss.sonatype.org/content/repositories/snapshots</url>
    </snapshotRepository>
</distributionManagement>
<profiles>
    <profile>
        <id>disable-javadoc-doclint</id>
        <activation>
            <jdk>[1.8,)</jdk>
        </activation>
        <!-- java8版本导致javadoc打包编译失败时候,添加-->
        <properties>
            <javadoc.opts>-Xdoclint:none</javadoc.opts>
        </properties>
    </profile>
    <profile>
        <id>release</id>
        <build>
            <plugins>
                <!-- sonatype 托管库自动发布的插件-->
                <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.3.2</version>
                    <configuration>
                        <autoVersionSubmodules>true</autoVersionSubmodules>
                        <useReleaseProfile>false</useReleaseProfile>
                        <releaseProfiles>release</releaseProfiles>
                        <goals>deploy</goals>
                    </configuration>
                </plugin>
                <!-- 指定Java8为maven的编译-->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.0</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
                <!-- 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>
                <!-- 源代码打包-->
                <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.10.4</version>
                    <executions>
                        <execution>
                            <id>attach-javadocs</id>
                            <phase>package</phase>
                            <goals>
                                <goal>jar</goal>
                            </goals>
                            <!-- java8版本导致javadoc打包编译失败时候,添加-->
                            <configuration>
                                <additionalparam>${javadoc.opts}</additionalparam>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>
<!-- 许可证 -->
<licenses>
    <license>
        <name>The Apache Software License, Version 2.0</name>
        <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
        <distribution>repo</distribution>
    </license>
</licenses>
<!-- 版本控制系统 -->            
<scm>
    <url>https://gitee.com/ikcross/aim-cloud.git</url>
    <connection>https://gitee.com/ikcross/aim-cloud.git</connection>
    <developerConnection>https://gitee.com/ikcross/aim-cloud</developerConnection>
</scm>
<!-- 开发者信息 -->          
<developers>
    <developer>
        <name>yanyiqiu</name>
        <email>yanyiqiu@meizu.com</email>
        <url>自己的域名</url>
    </developer>
</developers>
  1. magen的setting.xml配置

需要添加sonatype的身份认证,就是你一开始申请账号时候的用户名和密码。id要和pom.xml中distributionManagement 中的snapshotRepository和repository保持一致。

    <server>  
      <id>id</id>  
      <username>yourname</username>
      <password>yourpass!</password>
    </server>  
  1. 执行下面命令

    mvn clean install deploy -P release -Dgpg.passphrase=生成PGP秘钥时候你的密码
    

​ 可以通过gpg秘钥安装来发布到PGP的秘钥服务器

构建完就可以上sonatype这个网站进行发布啦

参考:

https://zhuanlan.zhihu.com/p/41650855

标签:git,center,仓库,maven,https,org,com,example
来源: https://blog.csdn.net/qq_48123829/article/details/121352053

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有