【Gradle】Maven-Publishing

使用Java开发完成一个模块或者一个基础框架需要提供给团队项目使用,这个时候有两种方式可提供,一是提供源码,二是提供编译构建好的jar包供使用,这个时候需要讲构建好的包发布到公司的私服(公司maven仓库),可以通过项目构建工具Maven发布也可以通过Gradle发布。下面我以Gradle发布为例。

1.添加依赖

在项目build.gradle文件中添加依赖一个maven发布的插件'maven-publish'

plugins {
    id 'maven-publish'
}

2.发布配置

发布之前需要配置需要发不到maven仓库的地址以及认证相关参数。

2.1.所有项目的通用配置

allprojects {
    group 'com.test'
    version '1.0.4'
    //指定字符编码
    tasks.withType(JavaCompile){
        options.encoding = "UTF-8"
    }
}

2.2.发布maven仓库地址

publishing {
    publications {
        myLibrary(MavenPublication){
            groupId project.group //默认是模块的group,需要跟build时保持一致
//            artifactId project.name //默认是模块的artifactId,需要跟build时保持一致
            version project.version //默认是模块的版本,需要跟build时保持一致
            from components.java //发布的是jar包,发布war包components.web。
        }
    }
    repositories{
        //发布到本地maven 仓库文件夹,会发布到本地仓库${USER_HOME}/.m2/setting.xml配置的仓库目录
        //publish 和 publishToMavenLocal都会执行
        mavenLocal()

        //发布到本地私服nexus,
        //只有publish才会执行
        maven {
            credentials {
                username = 'xxx'
                password = 'xxx
            }
            allowInsecureProtocol = true  //允许http访问
            url = 'http://localhost:8081/repository/aipark-hosted' //本地nexus私服地址,如果写失败,需要对nexus仓库设置权限。
        }
    }
}

 3.执行发布

配置完maven发布的配置后执行发布命令

gradle clean publish

如果没有安装gradle可以通过gradlew执行

./gradlew clean publish

也可以通过gradle面板执行,如下图:

发不到本地maven仓库

gradle clean publishToMavenLocal

publish和publishToMavenLocal的执行有何区别?

publish:所有定义的publication发布到所有定义的存储库的聚合任务。也就是build.gradle脚本publishing配置本地何远程的仓库都会执行。

publishToMavenLocal:将所有定义的publication复制到本地 Maven 库中,包括它们的元数据 (POM 文件等),不会执行远程仓库的发布。

4.查看执行结果

执行publish可以看到本地maven仓库,也就是${USER_HOME}/.m2/setting.xml配置的仓库目录

我的本地maven仓库目录在:${USER_HOME}/Documents/mavenReposity/

本地maven仓库:

远程maven私服仓库:

 

### 使用 Gradlemaven-publisher 插件上传自定义包到 Maven 仓库 为了使用 Gradle 和 `maven-publisher` 插件来上传自定义(二方)包到 Maven 仓库,需遵循一系列配置步骤。 #### 添加必要的插件和支持库 在项目的根目录下的 `build.gradle` 文件中应用 `maven-publish` 插件: ```groovy plugins { id 'java' id 'maven-publish' } ``` #### 定义发布目标仓库 通过修改项目中的 `build.gradle` 或者模块级别的 `build.gradle` 来设置要发布的远程或本地仓库地址。对于私有的 Maven 仓库,可以这样配置[^1]: ```groovy publishing { repositories { maven { url "/mnt/TestRepos/" credentials { username = project.findProperty("repoUsername") ?: System.getenv('REPO_USERNAME') password = project.findProperty("repoPassword") ?: System.getenv('REPO_PASSWORD') } } } } ``` 此部分指定了用于存储已构建工件的目标位置,并提供了访问这些资源所需的认证信息。 #### 创建并配置出版物 接着,在同一文件里声明一个或者多个 Publication 对象,它们代表了将被分发出去的内容集合。下面是一个简单的例子说明如何创建 JAR 形式的构件及其元数据: ```groovy publishing { publications { myPublication(MavenPublication) { groupId = 'com.example' artifactId = 'my-library-name' version = '1.0-SNAPSHOT' from components.java } } } ``` 这段脚本设置了组 ID (`groupId`)、制品 ID(`artifactId`) 和版本号 (`version`) ,同时也关联了 Java 组件作为实际打包的对象。 完成上述操作之后就可以执行命令 `./gradlew publish` 将软件包部署至指定的 Maven 仓库中去了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NettyBoy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值