maven-publish插件的使用笔记
—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插件的使用笔记相关推荐
- 【转】Maven Jetty 插件的问题(css/js等目录死锁)的解决
Maven Jetty 插件的问题(css/js等目录死锁,不能自动刷新)的解决: 1. 打开下面的目录:C:\Users\用户名\.m2\repository\org\eclipse\jetty\j ...
- maven 常用插件3
maven 常用插件3 转载:http://www.cnblogs.com/dennyzhangdd/p/5831112.html 1.根据项目类型打包:jar/war打包插件. 首先看<pac ...
- maven 版本号插件_测试Maven版本插件自动递增版本号
maven 版本号插件 抽象 Maven版本插件是一个非常强大的工具,我在很大程度上依赖于它来协调软件版本. 通常,软件发行版本号遵循简单的1.0.0.0-SNAPSHOT格式. 但是最近我需要在版本 ...
- 构建maven项目插件_如何构建一个Maven插件
构建maven项目插件 使用Okta的身份管理平台轻松部署您的应用程序 使用Okta的API在几分钟之内即可对任何应用程序中的用户进行身份验证,管理和保护. 今天尝试Okta. 由于其插件生态系统的普 ...
- 测试Maven版本插件自动递增版本号
抽象 Maven版本插件是一个非常强大的工具,我在很大程度上依赖于它来协调软件版本. 通常,软件发行版本号遵循简单的1.0.0.0-SNAPSHOT格式. 但是最近我需要在版本号中添加限定符-类似于1 ...
- maven插件依赖_当Maven依赖插件位于
maven插件依赖 问题: 我们进行了一个集成测试,该测试创建了一个Spring ClassPathXmlApplicationContext ,同时这样做导致NoSuchMethodError爆炸. ...
- maven 版本号插件_Maven内部版本号插件–用法示例
maven 版本号插件 假设我们需要向一些工件(jar,war等)添加内部版本号. 在这里,我想演示buildnumber-maven-plugin的用法. 这篇文章基于: http://mojo.c ...
- cargo maven_用于集成测试的Maven Cargo插件
cargo maven 在项目生命周期中,非常普遍的需求是设置集成测试. 幸运的是,Maven在默认构建生命周期的以下阶段(来自Maven 文档 )具有对这一确切方案的内置支持: 集成前测试 : 执行 ...
- 当Maven依赖插件位于
问题: 我们进行了一个集成测试,该测试创建了一个Spring ClassPathXmlApplicationContext ,同时这样做导致NoSuchMethodError爆炸. 事实证明,我们对S ...
- 使用Maven Jetty插件
尽管很长一段时间以来我一直在使用Maven,但直到最近我才使用过Jetty插件. 为了能够测试REST客户端,我创建了一个Servlet,向我显示了所有传入的参数和带有传入请求的标头. 为了在容器中运 ...
最新文章
- SVD java 算法实现
- android XML解析详解(封装好的工具类)
- 【已修正】SAP中各个环境的简介
- php 半角全角,PHP 全角转半角实现代码
- 火狐插件火狐***插件将Firefox变成***工具的七个插件
- 具有MicroProfile配置的可配置JAX-RS ExceptionMapper
- map key char*
- 工作流实战_13_flowable 待办任务列表查询
- imp库,python进入import内部
- oracle into bl,5_Oracle_Admin_Oracle的启动模式和关闭
- vue/父子组件之间的通信
- 了解FPS屏幕刷新率
- Druid Monitor监控Java Web和Java SE项目
- cloc工具 linux,Linux下源代码行数统计工具(sloccount,cloc等)
- python数据挖掘系列教程——PySpider框架应用全解
- java用不起_Java,泛型不起作用
- 联咏Novatek_NT98566(对标Sigmastar SSC337)_IMX335单板_IPC模组开发案例
- 第五节、Vim编辑器与Shell入门
- 企鹅F4手机外观设计有突破 配MTK6592八核处理器
- 滁州学院元旦晚会计算机,滁州学院机械学院2017元旦晚会精彩上演