发布到maven center仓库
   
    
    
    官方说明:
   
为了让Maven用户利用项目生成的构件,必须将它们部署到maven center repository。 许多开源项目希望允许使用Maven构建的项目用户透明地访问项目的构件。 为了实现这一点,项目应该将其构件部署到中央存储库。
简单来说就是将我们自己写好的文件上传到maven中央仓库,其他人想用就可以通过依赖的方式去引入。
    
    
    需求:
   
- 
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,(只能是正式包,并且上传的文件只能依赖于中央仓库里面含有的依赖) - 
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
 - 
PGP signature
(一种签名,具体啥的还得百度下才知道),所有部署的文件都需要使用GPG/PGP进行签名,每个文件都必须包含一个包含签名.asc文件。
例如:
example-application-1.4.7-sources.jar.asc
example-application-1.4.7-javadoc.jar.asc
 - 
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
这里是项目名称哦 一般用
pr
o
j
e
c
t
.
g
r
o
u
p
I
d
:
{project.groupId}:
p
r
o
j
e
c
t
.
g
r
o
u
p
I
d
:
{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
 
 - 
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
   
必须使用官方认证的库
- 
     
Apache Software Foundation
(for all Apache projects) - 
     see
the full list
 
    
    
    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中央仓库每隔一段时间就去托管库更新
    
    
    一个简单的例子
   
- 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>
- magen的setting.xml配置
 
    需要添加sonatype的身份认证,就是你一开始申请账号时候的用户名和密码。id要和pom.xml中
    
     distributionManagement
    
    中的
    
     snapshotRepository和repository保持一致。
    
   
    <server>  
      <id>id</id>  
      <username>yourname</username>
      <password>yourpass!</password>
    </server>  
- 
执行下面命令
mvn clean install deploy -P release -Dgpg.passphrase=生成PGP秘钥时候你的密码 
 可以通过gpg秘钥安装来发布到PGP的秘钥服务器
构建完就可以上sonatype这个网站进行发布啦
参考:
https://zhuanlan.zhihu.com/p/41650855