前一阵子工作有点忙,也比较焦虑。没有时间写一些博客文章,今天来补充一下。
想要解锁更多新姿势?请访问我的博客。: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"