Gradle对Maven的支持(Android开发)
来源:互联网 发布:php 使用aes加密 编辑:程序博客网 时间:2024/05/29 07:55
上篇文章(Maven+Nexus 环境搭建(Windows))讲了怎么搭建Maven和Nexus环境,并从项目生成到构建到发布都完整的跑了一遍。
我是做Android的,目前很多大型的Android项目都流行基础模块组件化开发,这里就能用到Maven了,而且,Gradle对Maven做了很好的支持。
一般我们在AndroidStudio中的Module类型分为3种:
application、library、java
在build.gradle中分别对应:
apply plugin: 'com.android.application'
apply plugin: 'com.android.library'
apply plugin: 'java'这三种Module最终构建的结果分别是:
apk、aar、jar
我这里以构建aar作为例子做详细说明(aar即把class字节码文件和资源文件打包到一个aar包中供另外一个project使用):
那么,需要在build.gradle中如何配置,并如何deploy到Nexus私服上呢?
首先,在Project的build.gradle中需要添加以下脚本,指定Nexus库:
allprojects { repositories { jcenter() maven { url "http://localhost:8081/nexus/content/repositories/snapshots/" } }}这个配置就是nexus仓库地址,这里是snapshot,等要发布再改成release(不清楚gradle是否支持动态切换,等后续再研究)
按照之前deploy 的步骤,到这里就需要在每个Module的pom.xml中添加 <distributionManagement>信息:
<distributionManagement> <repository> <id>nexus-releases</id> <name>releases</name> <url>http://localhost:8081/nexus/content/repositories/releases/</url> </repository> <snapshotRepository> <id>nexus-snapshots</id> <name>snapshots</name> <url>http://localhost:8081/nexus/content/repositories/snapshots/</url> </snapshotRepository></distributionManagement>然后命令行一路compile->package->deploy
感谢gradle,我们现在不用这么麻烦了,我们只需要在对应的Module的build.gradle中添加一下脚本:
apply plugin: 'maven'uploadArchives { repositories { mavenDeployer { pom.groupId = "com.company.test" pom.artifactId = "TestMaven" pom.version = "1.0.1-SNAPSHOT" repository(url: "http://localhost:8081/nexus/content/repositories/snapshots/") { authentication(userName: "admin", password: "admin123") } } }}
然后,我们打开命令行,进入到项目目录,F:\MarvenRepo\TestMaven\app (到F:\MarvenRepo\TestMaven这层也可以,但是一个Project有多个Module,在这层的话会deploy所有Module),然后输入命令行(机器要先安装gradle环境):
gradle uploadArchives
然后,项目就自动构建出一个aar文件并deploy到Nexus仓库中了
以上的例子是library项目构建aar,当然apk、Jar可是可以的,步骤同上。
那么,别的Project需要如何引用上面构建成功的aar呢?
第一步,和上面一样,在Project的build.gradle中需要添加以下脚本,指定Nexus库:
allprojects { repositories { jcenter() maven { url "http://localhost:8081/nexus/content/repositories/snapshots/" } }}
然后打开Module的build.gradle,添加
apply plugin: 'maven'dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.0.1' compile 'com.android.support:design:23.0.1' compile 'com.company.test:TestMaven:1.0.1-SNAPSHOT'}
gradle是通过compile的方式来引用外部库,这里主要是dependencies的最后一项:
compile 'com.company.test:TestMaven:1.0.1-SNAPSHOT'
这个结构为:compile 'groupId:artifactId:version'
然后build一下Project,gradle就会自动下载aar构建,等build完后,在项目的External Libraries下就有了TestMaven-1.0.1-SNAPSHOT
当然,如果需要引用的是一个Jar,也是按上述方式来做。
- Gradle对Maven的支持(Android开发)
- Android Studio Gradle 增加对.so 文件的支持
- Gradle对依赖管理的支持
- Maven对Web的支持
- Android 开发中,as或者idea对gradle的使用
- springboot 支持 jsp 的写法(分别使用 maven 和 gradle 作为构建工具)
- Android Gradle maven被墙
- android-maven-gradle-plugin
- 对Maven、gradle、svn、spring 3.0 fragment、git的想法
- 环境配置_mac上开发_Java,Android,Gradle,Maven,Hosts
- Android Studio: 对gradle的理解
- Android Studio之maven Central,JCenter(build.gradle、gradle-wrapper.properties、gradle.properties)
- Android Studio支持Java8特性的Gradle配置
- Maven国内库的配置(Maven与Gradle)
- Android开发常用的gradle配置总结
- Android开发中Gradle的高级用法
- Android开发中Gradle的高级用法
- RTC对移动开发IDE的支持
- Java依据文件头获取文件类型
- ZOJ----1610-Count the Colors(线段树)
- iOS开发网络篇—NSURLConnection基本使用
- 使用Cocos2d-lua开发植物大战僵尸08-僵尸的出现
- JSP使用jstl取不到数据
- Gradle对Maven的支持(Android开发)
- NSURLSession 学习笔记
- linux screen 命令详解
- 最大连续乘积子数组u
- NSURLSession学习笔记(三)Download Task
- JAVA——对象所占内存空间大小的计算
- android优化图片内存
- UVa 11221 - Magic square palindromes.
- 成员变量命名规范,类方法,self