2019独角兽企业重金招聘Python工程师标准>>>
背景:
用了Maven之后,你有没有这样的想法,自己一直在使用别人贡献的代码,自己能不能把自己觉得好的代码也贡献出来让大家方便。
还有如果你也是一名程序员,你会不会觉得要是把自己积累起来日常常用的代码工具组件放到Maven的中央仓库之后,很方便维护和升级,
可以做到
一次发布,到处使用 。
不用交给云盘和代码托管系统来管理,只需要知道 构件的坐标 + Maven之类的构建工具就能获取想要的构件。
预备知识:
1.Java
http://www.oracle.com/technetwork/cn/java/javase/downloads/index.html
2.Maven
https://maven.apache.org/
3.Git
https://git-scm.com/
4.
GnuGPG(gpg4win)
http://gpg4win.org/
5.Github
https://github.com/
6.Sonatype公司提供的
https://issues.sonatype.org
https://oss.sonatype.org
7.大概结构图
准备工作:
1.JDK安装配置
2
.
Maven安装配置
3
.
Git安装配置(可选)
4
.
OpenGPG安装配置
这四步完成之后的结果:
5.到
https://github.com/ 网站注册一个账号
6.到 https://issues.sonatype.org 网站注册一个账号
动手实验:
(1) 在 https://github.com/ 网站创建一个仓库
图1-1:登陆
图1-2:点击 “+” 好创建一个新的仓库
图1-3:仓库的信息填写,这里的必填项是仓库的名称Respository name
图1-4:找到刚刚创建的仓库,获取仓库的https连接地址和ssh连接地址
HTTPS地址:
https://github.com/zhangguangyong/codes.git
SSH地址:
(2) 在 https://issues.sonatype.org 网站创建一个issues——创建的issues需要等待审核
图2-1:登陆
图2-2:创建issues
图2-3:Issues的信息填写
Description 和 Attachment 不需要填写
点击Issues菜单,选择刚刚创建Issues,等待管理员的审批
审批通过之后,会看到这样的回复:
(3) 通过GnuGPG来创建一个公钥
参考:
http://my.oschina.net/huangyong/blog/226738
(4) 创建一个Maven项目 —— 配置 settings.xml、pom.xml、发布到 https://oss.sonatype.org 仓库
图4-1:配置maven安装目录下 conf/settings.xml 文件
settings.xml文件的内容:
xml version="1.0" encoding="UTF-8"
?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>D:/Dev/Repos/MavenlocalRepository>
<pluginGroups>
pluginGroups>
<proxies>
proxies>
<servers>
<server>
<id>ossid>
<username>zhanggyusername>
<password>xxxxxxxxpassword>
server>
servers>
<mirrors>
mirrors>
<profiles>
profiles>
settings
>
图4-2:配置项目的pom.xml
项目的目录结构(这里是在eclipse中创建的,也可以自己手动创建):
pom.xml 文件的内容:
<
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.0modelVersion>
<groupId>com.github.zhangguangyonggroupId>
<artifactId>codes-commonartifactId>
<version>0.0.1version>
<packaging>jarpackaging>
<name>codes-commonname>
<url>https://github.com/zhangguangyong/codesurl>
<description>Code Reponsitorydescription>
<licenses>
<license>
<name>The Apache Software License, Version 2.0name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txturl>
license>
licenses>
<developers>
<developer>
<name>zhangguangyongname>
<email>1243610991@qq.comemail>
developer>
developers>
<scm>
<connection>scm:git@github.com:zhangguangyong/codes.gitconnection>
<developerConnection>scm:git@github.com:zhangguangyong/codes.gitdeveloperConnection>
<url>https://github.com/zhangguangyong/codesurl>
scm>
<properties>
<project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
properties>
<dependencies>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>3.8.1version>
<scope>testscope>
dependency>
dependencies>
<profiles>
<profile>
<id>releaseid>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-source-pluginartifactId>
<version>2.2.1version>
<executions>
<execution>
<phase>packagephase>
<goals>
<goal>jar-no-forkgoal>
goals>
execution>
executions>
plugin>
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-javadoc-pluginartifactId>
<version>2.9.1version>
<executions>
<execution>
<phase>packagephase>
<goals>
<goal>jargoal>
goals>
execution>
executions>
plugin>
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-gpg-pluginartifactId>
<version>1.5version>
<executions>
<execution>
<phase>verifyphase>
<goals>
<goal>signgoal>
goals>
execution>
executions>
plugin>
plugins>
build>
<distributionManagement>
<snapshotRepository>
<id>ossid>
<url>https://oss.sonatype.org/content/repositories/snapshots/url>
snapshotRepository>
<repository>
<id>ossid>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/url>
repository>
distributionManagement>
profile>
profiles>
project>
注意事项:settings.xml文件节点<
sever> 下的 节点 需要与 pom.xml 文件 节点 和 节点 下的 节点保持一致
图4-3:发布项目到 https://oss.sonatype.org 仓库
使用命令cmd到项目的根路径
执行命令:mvn clean deploy -P release
命令执行完之后,就可以到 https://oss.sonatype.org 下查看自己刚刚发布的构件了
(5) 到 https://oss.sonatype.org 仓库 操作自己发布的构件(刚刚用maven发布的)——1.关闭,2.发布( 需要等到第(2)步的issues审核通过才能发布 )
图5-1:进入 https://oss.sonatype.org 查看自己发布的构件
找到自己发布的构建,点击关闭 ( 找组名是:com.github.xxx 开头的,我们刚刚在pom.xml里面填写的组件就是 com.github.zhangguangyong)
关闭之后需要等待审批,审批成功之后,大概是这个样子:
关闭的审核通过之后,可进行发布了(在发布前需要确保之前创建Issues已经审批通过了,不然会报错没有权限)
这里报错的可能:
1. 刚刚创建的Issues还没有审批通过
2. 项目的pom.xml里面的<
groupId
> 与 创建Issues时候填写的 group Id 不一致
(6) 在 https://oss.sonatype.org 发布成功之后,再去 https://issues.sonatype.org 给管理员一个反馈,说: "你的构件已经发布成功了".
在 https://issues.sonatype.org 等待管理员的审核,通过之后,就可以在 http://search.maven.org/ 上面所搜你发布的构件了
图6-1:通知Issues的管理员,你的构件在 https://oss.sonatype.org 上成功发布
图6-2:Issues管理员的反馈如果是这样的那恭喜你,你的构件就能够在maven中央仓库中搜索到了:
http://search.maven.org/
图6-3:在
http://search.maven.org/ 上搜索自己的构件
参考:
http://my.oschina.net/huangyong/blog/226738
http://www.trinea.cn/dev-tools/upload-java-jar-or-android-aar-to-maven-center-repository
来自为知笔记(Wiz)