Gradle对Maven的支持(Android开发)

上篇文章(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中添加  信息:


    
        nexus-releases
        releases
        http://localhost:8081/nexus/content/repositories/releases/
    
	
    
        nexus-snapshots
        snapshots
        http://localhost:8081/nexus/content/repositories/snapshots/
    
然后命令行一路 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仓库中了

Gradle对Maven的支持(Android开发)_第1张图片

以上的例子是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开发))