好久没有写 java 代码了,持续更新一下自己的脚手架项目smart-spring-boot-project,发现有个更佳的实践,将脚手架以 jar 发布,脚手架项目以后升级版本就好了。
没有用中央仓库发布过 jar,听说也是比较麻烦,看到可以用 github 来实现,索性就来摸索一下。
简单看了一下发现有两种方式:
- GitHub Packages registry
- Github Repository 作为 Maven 仓库
接下来分别试试看。
GitHub Packages registry
首先采用 GitHub Packages registry 来实现,免费空间 500MB。简单方便,唯一不足的就是使用的时候需要权限验证,这点有点不太好。这里的权限验证不是 Package,而是 github 账户的 token 验证,只要有一个读取包的权限既可下载 Apache Maven registry 的 jar。
maven 配置文件
首先先在 maven 配置文件中增加 token 验证和仓库地址
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| <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">
<activeProfiles> <activeProfile>github</activeProfile> </activeProfiles>
<profiles> <profile> <id>github</id> <repositories> <repository> <id>central</id> <url>https://repo1.maven.org/maven2</url> </repository> <repository> <id>github</id> <url>https://maven.pkg.github.com/trumandu/maven-repository</url> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> </profile> </profiles>
<servers> <server> <id>github</id> <username>trumandu</username> <password>TOKEN</password> </server> </servers> </settings>
|
待发布 jar 项目 pom
然后再待发布 jar 项目 pom 添加项目发布仓库地址
1 2 3 4 5 6 7
| <distributionManagement> <repository> <id>github</id> <name>GitHub OWNER Apache Maven Packages</name> <url>https://maven.pkg.github.com/trumandu/maven-repository</url> </repository> </distributionManagement>
|
最后执行maven deploy
既可。访问地址https://github.com/TrumanDu/maven-repository/packages/
既可以看到相应的 jar.
使用发布的 jar
在需要使用的项目 pom 文件中添加如下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <dependencies> <dependency> <groupId>top.trumandu</groupId> <artifactId>smart-rest-spring-boot</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> </dependencies> <repositories> <repository> <id>github</id> <name>GitHub OWNER Apache Maven Packages</name> <url>https://maven.pkg.github.com/trumandu/maven-repository</url> </repository> </repositories>
|
这里要注意的是,对于下载 github packages 需要权限验证,所以在 maven 配置文件中需要添加 token 信息。
1 2 3 4 5 6 7
| <servers> <server> <id>github</id> <username>trumandu</username> <password>TOKEN</password> </server> </servers>
|
通过如上简单的方法既可发布属于自己的 jar 到外网,以供任何人使用,切记需要添加验证信息。
使用 Github Repository 作为 Maven 仓库
配置 token
在 maven 配置文件 conf.xml 中增加 token 配置,这个 token 切记增加user:email
权限。
1 2 3 4 5 6 7
| <servers> <server> <id>github</id> <username>trumandu</username> <password>TOKEN</password> </server> </servers>
|
待发布 jar 项目 pom
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| <properties> <github.global.server>github</github.global.server> </properties> <!--1.作用:将jar deploy(发布)到本地储存库位置(altDeploymentRepository)--> <plugin> <artifactId>maven-deploy-plugin</artifactId> <configuration> <altDeploymentRepository>internal.repo::default::file://${project.build.directory}/mvn-repo </altDeploymentRepository> </configuration> </plugin> <!--2.作用:将本地存储库位置的jar文件发布到github上--> <plugin> <groupId>com.github.github</groupId> <artifactId>site-maven-plugin</artifactId> <version>0.12</version> <configuration> <message>Maven artifacts for ${project.version}</message> <noJekyll>true</noJekyll> <!--本地jar相关文件地址,与上方配置储存库位置(altDeploymentRepository)保持一致--> <outputDirectory>${project.build.directory}/mvn-repo</outputDirectory> <!--配置上传到github哪个分支,此处配置格式必须以refs/heads/+分支名称--> <branch>refs/heads/main</branch> <merge>true</merge> <includes> <include>**/*</include> </includes> <!--对应github上创建的仓库名称 name--> <repositoryName>maven-repository</repositoryName> <!--github 仓库所有者即登录用户名--> <repositoryOwner>TrumanDu</repositoryOwner> </configuration> <executions> <execution> <goals> <goal>site</goal> </goals> <phase>deploy</phase> </execution> </executions> </plugin>
|
执行命令发布到 github 仓库:mvn clean deploy
使用 jar
在任何 maven 项目 pom 文件中添加如下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <dependencies> <dependency> <groupId>top.trumandu</groupId> <artifactId>smart-rest-spring-boot</artifactId> <version>0.0.2-SNAPSHOT</version> </dependency> </dependencies> <repositories> <repository> <id>github</id> <!-- 格式是 https://raw.githubusercontent.com/[github 用户名]/[github 仓库名]/[分支名]/repository --> <url>https://raw.githubusercontent.com/trumandu/maven-repository/main/repository</url> <snapshots> <enabled>true</enabled> <updatePolicy>always</updatePolicy> </snapshots> </repository> </repositories>
|
Enjoy!!!