Gradle 项目的 jar 发布到私有仓库,java 并发编程实战王宝令
以管理员身份登录 Nexus3,按照下图操作新增一个帐号,用来执行上传下载操作:

帐号基本信息如下,注意两个红框中的配置,状态是激活,角色您可以视情况而定,我这里为了简单就用了管理员角色:

最后点击底部的 Create local user 按钮完成创建;
Nexus3 上创建两个仓库(release 和 snapshot)
一般咱们会用到两种类型的仓库:release 和 snapshot,先创建 release 的,操作如下:

类型选择 maven2(hosted):

需要设置的参数如下图,这里我起的名字是 my-release,注意 Version policy 一定要选择 Release:

点击底部的 Create respository 即可创建仓库;
接着创建 snapshot 类型的仓库,名字是 my-snapshot,详情如下所示,注意 Version policy 一定要选择 Snapshot,并且允许重复部署:

好了,设置完成,接下来进入开发环节,先把二方库部署到刚刚新建的仓库中,再在另一个应用中使用这个二方库;
将二方库部署到 Nexus3
接下来的操作在您的二方库工程上进行,我这里用的是一个典型父子结构的 gradle 工程,该工程详情请参考《Gradle构建多模块SpringBoot应用》,下图红框中的 democlient 就是二方库模块,这里面只有一个 Student 类,咱们要做的就是将 democlient 模块构建成 jar 并部署到 Nexus3 的仓库中:

democlient 模块的 build.gradle 如下,与上传操作有关的是 maven 插件,以及 uploadArchives 任务的参数,其中仓库的 url 参数的来源稍后会讲到:
plugins {
id 'java-library'
// 使用 maven 插件执行上传 jar 到 Nexus3 的操作
id 'maven'
}
// 如果要上传库到私服,就在此添加
def uploadGroup = group
def uploadArtifactId = this.name
def uploadVersion = version
// uploadArchives 任务的配置
uploadArchives {
// 仓库配置
repositories {
mavenDeployer {
// release 仓库的配置
repository(url: 'http://192.168.50.43:8081/repository/my-release/') {
authentication(
// Nexus3 上有权限上传 jar 的帐号及其密码
userName: 'bolingcavalry',
password: '123456'
)
}
// snapshot 仓库的配置
snapshotRepository(url: 'http://192.168.50.43:8081/repository/my-snapshot/') {
authentication(
// Nexus3 上有权限上传 jar 的帐号及其密码
userName: 'bolingcavalry',
password: '123456'
)
}
// 二方库的身份参数:group、artifact、version
pom.groupId = uploadGroup
pom.artifactId = uploadArtifactId
pom.version = uploadVersion
}
}
}
// 子模块自己的依赖
dependencies {
// 使用 api,将依赖传递给使用 democlient 的模块
api 'org.projectlombok:lombok'
// annotationProcessor 不会传递,使用了 lombok 生成代码的模块,需要自己声明 annotationProcessor
annotationProcessor 'org.projectlombok:lombok'
}
uploadArchives 任务中的仓库 url 参数,请直接从仓库的详情页复制,如下图红框 4 就是 my-release 仓库的 url:

确认您项目的 version,我这里是 1.0.0-SNAPSHOT,如下图红框,所以构建出的 jar 会上传的 my-snapshot 仓库:

设置完毕后双击下图红框中的按钮,即可开始编译和构建:

构建完成后控制台输出如下,可见会先做编译打包再上传:

去 Nexus3 看看,点击下图位置查看仓库内容:

如下图,jar 已经上传成功,这里有多个是因为我这边执行了多次 uploadArchives 任务:

上传到 my-release 仓库
篇幅所限,就不展示上传到 my-release 仓库的过程了,因为和前面上传到 my-snapshot 的操作是一样的,唯一的不同就是项目 version 中不要有 snapshot,如下图,这样就能上传到 my-release 仓库:

需要注意的是
,之前创建 my-release 仓库时,其 Deployment policy 选项为 Disable redeploy,即不允许同一个 version 重复提交,因此同一个 version 只能成功上传一次,如果再次上传会报错,如下图:

使用仓库的内容
使用仓库的方法很简单,首先确保使用者的电脑能够访问到仓库,再在项目中配置仓库地址和 jar 坐标就行了,如下图红框:

以上就是 Gradle 项目的 jar 发布到私有仓库和使用该 jar 的完整过程,如果您正在发布二方库,希望本文可以给您一些参考;
评论