—START—

一、插件简介
maven-publish是一个Gradle插件,用来实现将本地library发布到Apache Maven仓库。例如:将*.aar、*.jar等library发布到仓库当中,我们可以通过gradle或者maven进行远程依赖使用它。

二、引入插件
在需要用到的模块的build.gradle文件加入如下代码即可。

apply plugin: 'maven-publish'

三、插件使用
引入插件后,我们可以扩展一些我们自定义的属性以及任务。引入插件的模块中,我们可以通过复写publishing节点做自定义操作。

pulishing 内部,我们可以复写两个配置publications 和repositories。
具体配置请参考 Gradle官网介绍

publishing {//基本信息配置publications {maven(MavenPublication) {//配置组织结构信息(这里就是配置我们依赖时,所用到的libs结构信息 implementation 'com.xxx.androidlibs:xxx:1.0.0')groupId = 'com.xxx.androidlibs'artifactId = 'xxx'version = '1.0.0'//定义输出资源源文件位置artifact androidSourcesJarartifact("$buildDir/outputs/aar/xxx.aar")pom {//libs名称name = 'xxx'//libs官网(一般为GitHub libs 地址)url = 'http://www.example.com/library'//libs描述(功能介绍)description = 'xxx.'//开源协议licenses {license {name = 'The Apache License, Version 2.0'url = 'http://www.apache.org/licenses/LICENSE-2.0.txt'}}//libs发布者信息developers {developer {id = 'xxx'name = 'xxx'email = 'xxx@163.com'}}//libs源码仓库信息scm {connection = 'scm:git:git://example.com/my-library.git'developerConnection = 'scm:git:ssh://example.com/my-library.git'url = 'http://example.com/my-library'}}}}//maven仓库配置repositories {mavenLocal()//本地仓库(默认)maven {//本地maven地址配置(自定义,也可以是一个maven仓库地址)url = uri("${rootProject.projectDir}/repo")}}
}
task androidSourcesJar(type: Jar) {archiveClassifier = 'sources'from android.sourceSets.main.java.srcDirs
}artifacts {archives androidSourcesJar
}

四、编译命令
执行编译命令,成功后,就会生成我们可以依赖的libs
(implementation ‘com.xxx.androidlibs:xxx:1.0.0’)
当然,你需要先在项目根目录的build.gradle配置maven仓库,即repositories {}所配置的信息。

./gradlew build publish

五、注意事项
artifact("$buildDir/outputs/aar/xxx.aar")
这里加入了这一行,他会把libs的build.gradle 下
dependencies{
api files(‘libs/libddshare.jar’)
}
使用api依赖的第三方库 一起打包到*.aar。

六、完整代码

这里使用afterEvaluate 节点包裹,保证其执行顺序,因为我们打包了 “$buildDir/outputs/aar/xxx.aar” buildDir里的资源。

apply plugin: 'maven-publish'task androidSourcesJar(type: Jar) {archiveClassifier = 'sources'from android.sourceSets.main.java.srcDirs
}artifacts {archives androidSourcesJar
}afterEvaluate {publishing {//基本信息配置publications {maven(MavenPublication) {//配置组织结构信息(这里就是配置我们依赖时,所用到的libs结构信息 implementation 'com.xxx.androidlibs:xxx:1.0.0')groupId = 'com.xxx.androidlibs'artifactId = 'xxx'version = '1.0.0'//定义输出资源源文件位置artifact androidSourcesJarartifact("$buildDir/outputs/aar/xxx.aar")pom {//libs名称name = 'xxx'//libs官网(一般为GitHub libs 地址)url = 'http://www.example.com/library'//libs描述(功能介绍)description = 'xxx.'//开源协议licenses {license {name = 'The Apache License, Version 2.0'url = 'http://www.apache.org/licenses/LICENSE-2.0.txt'}}//libs发布者信息developers {developer {id = 'xxx'name = 'xxx'email = 'xxx@163.com'}}//libs源码仓库信息scm {connection = 'scm:git:git://example.com/my-library.git'developerConnection = 'scm:git:ssh://example.com/my-library.git'url = 'http://example.com/my-library'}}}}//maven仓库配置repositories {mavenLocal()//本地仓库(默认)maven {//本地maven地址配置(自定义,也可以是一个maven仓库地址)url = uri("${rootProject.projectDir}/repo")}}}
}

—END—

maven-publish插件的使用笔记相关推荐

  1. 【转】Maven Jetty 插件的问题(css/js等目录死锁)的解决

    Maven Jetty 插件的问题(css/js等目录死锁,不能自动刷新)的解决: 1. 打开下面的目录:C:\Users\用户名\.m2\repository\org\eclipse\jetty\j ...

  2. maven 常用插件3

    maven 常用插件3 转载:http://www.cnblogs.com/dennyzhangdd/p/5831112.html 1.根据项目类型打包:jar/war打包插件. 首先看<pac ...

  3. maven 版本号插件_测试Maven版本插件自动递增版本号

    maven 版本号插件 抽象 Maven版本插件是一个非常强大的工具,我在很大程度上依赖于它来协调软件版本. 通常,软件发行版本号遵循简单的1.0.0.0-SNAPSHOT格式. 但是最近我需要在版本 ...

  4. 构建maven项目插件_如何构建一个Maven插件

    构建maven项目插件 使用Okta的身份管理平台轻松部署您的应用程序 使用Okta的API在几分钟之内即可对任何应用程序中的用户进行身份验证,管理和保护. 今天尝试Okta. 由于其插件生态系统的普 ...

  5. 测试Maven版本插件自动递增版本号

    抽象 Maven版本插件是一个非常强大的工具,我在很大程度上依赖于它来协调软件版本. 通常,软件发行版本号遵循简单的1.0.0.0-SNAPSHOT格式. 但是最近我需要在版本号中添加限定符-类似于1 ...

  6. maven插件依赖_当Maven依赖插件位于

    maven插件依赖 问题: 我们进行了一个集成测试,该测试创建了一个Spring ClassPathXmlApplicationContext ,同时这样做导致NoSuchMethodError爆炸. ...

  7. maven 版本号插件_Maven内部版本号插件–用法示例

    maven 版本号插件 假设我们需要向一些工件(jar,war等)添加内部版本号. 在这里,我想演示buildnumber-maven-plugin的用法. 这篇文章基于: http://mojo.c ...

  8. cargo maven_用于集成测试的Maven Cargo插件

    cargo maven 在项目生命周期中,非常普遍的需求是设置集成测试. 幸运的是,Maven在默认构建生命周期的以下阶段(来自Maven 文档 )具有对这一确切方案的内置支持: 集成前测试 : 执行 ...

  9. 当Maven依赖插件位于

    问题: 我们进行了一个集成测试,该测试创建了一个Spring ClassPathXmlApplicationContext ,同时这样做导致NoSuchMethodError爆炸. 事实证明,我们对S ...

  10. 使用Maven Jetty插件

    尽管很长一段时间以来我一直在使用Maven,但直到最近我才使用过Jetty插件. 为了能够测试REST客户端,我创建了一个Servlet,向我显示了所有传入的参数和带有传入请求的标头. 为了在容器中运 ...

最新文章

  1. SVD java 算法实现
  2. android XML解析详解(封装好的工具类)
  3. 【已修正】SAP中各个环境的简介
  4. php 半角全角,PHP 全角转半角实现代码
  5. 火狐插件火狐***插件将Firefox变成***工具的七个插件
  6. 具有MicroProfile配置的可配置JAX-RS ExceptionMapper
  7. map key char*
  8. 工作流实战_13_flowable 待办任务列表查询
  9. imp库,python进入import内部
  10. oracle into bl,5_Oracle_Admin_Oracle的启动模式和关闭
  11. vue/父子组件之间的通信
  12. 了解FPS屏幕刷新率
  13. Druid Monitor监控Java Web和Java SE项目
  14. cloc工具 linux,Linux下源代码行数统计工具(sloccount,cloc等)
  15. python数据挖掘系列教程——PySpider框架应用全解
  16. java用不起_Java,泛型不起作用
  17. 联咏Novatek_NT98566(对标Sigmastar SSC337)_IMX335单板_IPC模组开发案例
  18. 第五节、Vim编辑器与Shell入门
  19. 企鹅F4手机外观设计有突破 配MTK6592八核处理器
  20. 滁州学院元旦晚会计算机,滁州学院机械学院2017元旦晚会精彩上演

热门文章

  1. 关于openlaeyrs获取谷歌卫星地图的无偏瓦片
  2. 快速查毒及电脑防毒的解决方案
  3. windows 7 旗舰版 失效key
  4. 腾讯2020校园招聘笔试
  5. 毕业论文-word中自动生成中英文双目录(TC域,支持更新不覆盖)
  6. JavaScript高级程序设计之表单基础
  7. webim【LayIM】开发者文档
  8. 就算所有人都放弃我,我也不会放弃我自己,坚持梦想,拒绝国企,拒绝公务员
  9. 海马体启发的记忆模型
  10. 2019(第八届)国际桥梁与隧道技术大会-会议议程