【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仓库地址

bash 复制代码
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发布的配置后执行发布命令

bash 复制代码
gradle clean publish

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

bash 复制代码
./gradlew clean publish

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

发不到本地maven仓库

bash 复制代码
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私服仓库:

相关推荐
帅次2 天前
解决 Android WebView 无法加载 H5 页面常见问题的实用指南
android·okhttp·gradle·binder·webview·retrofit·appcompat
打酱油的日光灯11 天前
解决mac下 Android Studio gradle 下载很慢,如何手动配置
android·macos·gradle·android studio
茜茜西西CeCe17 天前
移动技术开发:登录注册界面
java·gitee·gradle·android studio·安卓·移动技术开发·原生安卓开发
技术无疆19 天前
Hutool:Java开发者的瑞士军刀
android·java·开发语言·ide·spring boot·gradle·intellij idea
Yang-Never19 天前
Android Studio -> Android Studio 获取release模式和debug模式的APK
android·gradle·android studio
宋发元19 天前
Gradle和Maven
gradle·maven
帅次20 天前
Android Studio:驱动高效开发的全方位智能平台
android·ide·flutter·kotlin·gradle·android studio·android jetpack
居安思危_Ho21 天前
【Android笔记】Android Studio打包 提示Invalid keystore format
android·笔记·gradle·android studio·android 打包
舒一笑1 个月前
gradle和maven相比有什么相同点和区别?
java·gradle·maven
不想迷路的小男孩1 个月前
android 15升级适配无法安装运行,并且提示应用未安装
android·开发语言·python·gradle