前一阵子工作有点忙,也比较焦虑。没有时间写一些博客文章,今天来补充一下。
想要解锁更多新姿势?请访问我的博客。:smirk:
面临毕业,不想一直咸鱼,可是又什么都不会,做点什么的?思来想去,也是为了给自己少一点麻烦,就决定把自己半年前那个 秒杀商城项目 重构一下,放到云平台上。不过既然都是云平台了,肯定会有各种支撑服务,就譬如说缓存中心,日志中心,监控中心,权限管理中心等等,但是这些功能,在别的项目中也可以用到,这就带来一些不必要的麻烦。
这时候,就推荐使用maven来统一管理了。
前些日子,趁着毕业生创业指导开课的时候,我把缓存中心敲完了。然后将他部署到maven中央仓库。下面我就来分享一下部署到中央仓库的那些坑 。
打开浏览器, sonatype 官网 ,这个地址,注册一个账号,并且记住用户名密码
下载好 git
客户端
在 https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134 中新建一个“Project ticket”。
下面引以下 Spiderman.L 大佬博客上的图片(太懒了不想重新填一遍),照着这个步骤来。
点击 Create
之后,你就会进入一个 jira
页面(sonatype 使用jira 来追踪每一个项目进度),与此同时你注册时使用的邮箱中也会收到一封邮件提示你,任务创建成功,正在等待处理。
创建完毕后就等待一段时间,刷新页面。当状态变为 “resolved”
,然后你就可以使用 maven
上传项目了。或者就等着接收 sonatype
的反馈邮件,确认已经为你创建好了新项目
发布完后,可能几分钟,也可能几小时,会有工作人员问你是否有Group Id对应的那个域名的所有权,如果有的话就回复有,并且按照他说的三个方法来(下图为参考语句),然后就会得到Configuration has been prepared的回复,这个时候就可以准备发布了。
我用的是第一个方法,因为我的域名是从阿里云上买的,我在阿里云平台的域名管理中心处,添加了一个TXT记录到这个 ticket
上,这样他会自己检测。
当然了,如果自己没有域名的话可以挂在开源的域名下面,例如com.github.tengshe789,这样一样可以发布。
最差的方法,就是用个人域名邮箱发送给他邮件。
做完上一步,他会在美国工作日时间里回复部署的相关信息,如图:
当我们的 ticket
最终状态变为 Resolved
的时候,表示我们有权限可以上传东西了。
找到你安装maven的目录下面,打开 maven目录/conf/settings.xml
文件。在 servers
标签中填写如下信息
<servers> <server> <id>sonatype-nexus-snapshots</id> <username>tengshe789(我的用户名)</username> <password>(我的sonatype密码)</password> </server> <server> <id>sonatype-nexus-staging</id> <username>tengshe789(我的用户名)</username> <password>(我的sonatype密码)</password> </server> </servers>
按照下面代码添加。
<scm> <connection>scm:git:https://github.com/tengshe789/miaocache.git</connection> <developerConnection>scm:git:https://github.com/tengshe789/miaocache.git</developerConnection> <url>https://github.com/tengshe789/miaocache</url> <tag>0.0.1</tag> </scm>
这些地址填的是你github上的地址。
<distributionManagement> <snapshotRepository> <!-- 这个id与我上一步在setting.xml中设置的id一致的 --> <id>sonatype-nexus-snapshots</id> <name>OSS Snapshots Repository</name> <!-- 这里的url就是Issue中回复的snapshots 的repo地址--> <url>https://oss.sonatype.org/content/repositories/snapshots</url> </snapshotRepository> <repository> <!-- 这个id与我上一步在setting.xml中设置的id一致的 --> <id>sonatype-nexus-staging</id> <name>OSS Staging Repository</name> <!-- 这里的url就是Issue中回复的staging 的repo地址--> <url>https://oss.sonatype.org/service/local/staging/deploy/maven2</url> </repository> </distributionManagement>
这些地址直接复制上就行。
<build> <finalName>${project.name}</finalName> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> <pluginManagement> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${spring-boot.version}</version> <configuration> <finalName>${project.build.finalName}</finalName> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </pluginManagement> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> <configuration> <target>${maven.compiler.target}</target> <source>${maven.compiler.source}</source> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build> <repositories> <!--阿里云主仓库,代理了maven central和jcenter仓库--> <repository> <id>aliyun</id> <name>aliyun</name> <url>https://maven.aliyun.com/repository/public</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> <!--阿里云代理Spring 官方仓库--> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://maven.aliyun.com/repository/spring</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <!--阿里云代理Spring 插件仓库--> <pluginRepository> <id>spring-plugin</id> <name>spring-plugin</name> <url>https://maven.aliyun.com/repository/spring-plugin</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> </pluginRepositories> <profiles> <profile> <id>release</id> <build> <plugins> <!-- Source --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.2.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>jar-no-fork</goal> </goals> </execution> </executions> </plugin> <!-- Javadoc --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>2.9.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> </plugins> </build> <distributionManagement> <snapshotRepository> <id>sonatype-nexus-snapshots</id> <name>OSS Snapshots Repository</name> <url>https://oss.sonatype.org/content/repositories/snapshots</url> </snapshotRepository> <repository> <id>sonatype-nexus-staging</id> <name>OSS Staging Repository</name> <!-- 这里的url就是Issue中回复的staging 的repo地址--> <url>https://oss.sonatype.org/service/local/staging/deploy/maven2</url> </repository> </distributionManagement> </profile> </profiles> </project>
下面地址是通用的插件和profiles配置,不能少,按照需求来设置。有能力的同学自己研究一下。
打开git窗口,输入 gpg --gen-key
。这时候会出现一大片英文,看不懂的同学不要紧,跟着我做就行。
gpg --list-keys
这个命令是查看自己key的编号。找到 pub对应的那个编号,例如 pub 2048R/8C473F5C
上传到key验证库:
gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys 8C473F5C
打开idea,找到下面的终端,输入maven命令。
mvn clean deploy -P sonatype-oss-release -Darguments="gpg.passphrase=设置gpg设置密钥时候输入的Passphrase"