一、设置 Gradle 插件模块
在 【Android Gradle 插件】将自定义 Gradle 插件上传到自建 Maven 仓库 ⑦ ( 登录 Maven 私服 | Maven 私服初始化设置 | 创建 Maven 仓库 ) 博客中 , 在 Maven 私服中创建了 Maven 仓库 " MyRepository “ , 地址为 ” http://localhost:8081/repository/MyRepository/ " ;
在 Gradle 插件模块的 build.gradle 构建脚本 的 publishing/publications 脚本块 中 , 配置如下代码 ,
在 Gradle 面板中执行该 " publishPluginPublicationToMyRepositoryRepository " 任务 , 就会自动将插件内容上传到创建的 maven 仓库中 ;
上传完成后 , 在 Maven 私服的 Web 界面 , 点击 MyRepository 仓库 ,
进入 HTML View 界面 , 此时已经可以看到上传的 jar包 , 文档 , 代码 文件 ;
-
- name : 任意字符串 , 一般设置为远程仓库的名称 ;
- url : Maven 仓库的 url 地址 ;
- credentials : 设置访问 Maven 仓库的账号和密码 ;
-
plugins { id 'java-library' id 'kotlin' id 'groovy' } java { sourceCompatibility = JavaVersion.VERSION_1_7 targetCompatibility = JavaVersion.VERSION_1_7 } dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" implementation gradleApi() implementation localGroovy() implementation fileTree(dir: 'libs', includes: ['*.jar']) } // 指定自定义 Gradle 插件的分组 group 'kim.hsl.plugin' // 指定自定义 Gradle 插件的版本号 version '0.1' // 自定义 Gradle 插件的名称 , 默认为工程名 // 也可以在 publishing / publications 脚本块中 自己指定 // 用于将 插件上传到 远程仓库 或者 本地仓库 中 apply plugin: 'maven-publish' // 自定义源码打包任务 // 自定义 Jar 类型的 Gradle 任务 // 将源码打包到 jar 包中 task sources2Jar(type: Jar) { // 指明要打的 jar 包名称 // 最终打包的名称是 plugin-0.1-sources.jar baseName 'plugin' // 指定分类器 , 与其它 jar 包进行区分 classifier 'sources' // 设置打包哪些文件 // 这里设置的是 main 目录下的所有文件 from sourceSets.main.allSource } // 自定义文档打包任务 // 自定义 Jar 类型的 Gradle 任务 // 将文档打包到 jar 包中 task document2Jar(type: Jar, dependsOn: [javadoc, groovydoc]) { // 指明要打的 jar 包名称 // 最终打包的名称是 plugin-0.1-doc.jar baseName 'plugin' // 指定分类器 , 与其它 jar 包进行区分 classifier 'doc' // 设置打包哪些文件 // 这里设置的是 javadoc 和 groovydoc 任务的输出目录 from javadoc.destinationDir, groovydoc.destinationDir } // 配置 工程工件 对应的 jar 包产出 配置 // 这里将 文档打包 和 源码打包 后的 jar 包作为输出 artifacts { archives sources2Jar archives document2Jar } // 发布到 远程/本地仓库 相关配置 publishing { publications { // plugin 函数是随意命名的函数 plugin(MavenPublication) { // 配置上传内容 // components.java 是打包的 jar 包 from components.java // 指定自定义 Gradle 插件名称 artifactId 'plugin' // 上传源码 artifact sources2Jar // 上传文档 artifact document2Jar // 自定义 pom 节点 pom.withXml { /* 添加如下节点 <licenses> <license> <name>Apache License, Version 2.0</name> <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url> <distribution>repo</distribution> <comments>A business-friendly OSS license</comments> </license> </licenses> */ // 先创建 root 根节点 def root = asNode() // 向根节点中添加 <licenses> 节点 // 向 <licenses> 节点中添加 <license> 节点 def licensesNode = root .appendNode("licenses") // <licenses> 节点 .appendNode("license") // <license> 节点 // 为 <license> 节点 配置 name 节点属性 licensesNode.appendNode("name", "Apache License, Version 2.0") // 为 <license> 节点 配置 url 节点属性 licensesNode.appendNode("url", "https://www.apache.org/licenses/LICENSE-2.0.txt") // 为 <license> 节点 配置 distribution 节点属性 licensesNode.appendNode("distribution", "repo") // 为 <license> 节点 配置 comments 节点属性 licensesNode.appendNode("comments", "A business-friendly OSS license") } } } // 配置上传到哪个 Maven 仓库 // 默认为本地 Maven 仓库 repositories { maven { // 任意字符串名称 name "MyRepository" // Maven 仓库的 url 地址 // 点击 Maven 仓库的 URL 列的 copy 按钮获取 url "http://localhost:8081/repository/MyRepository/" // 配置上传的身份 // 就是 Maven 私服的账号密码 credentials { username = "admin" password = "admin123" } } } }
二、执行发布 Gradle 插件任务将 Gradle 插件上传到自建 Maven 仓库
-
构建脚本进行上述修改后 , 同步脚本 , 就会在 Gradle 面板中生成 " publishPluginPublicationToMyRepositoryRepository " 任务 ;