Gradle连载5-多个构建工程以及android工程配置

114 阅读2分钟

一、常用的源集属性

apply plugin:'java'

sourceSets {
    main {
        // 对main SourceSet进行配置

    }
}

task custom65SourceSetTask {
    sourceSets.all {
        println "name:" + name
        println "outputs.getFiles():" + outputs.getFiles()
        println "outputs.class:" + outputs.class
        println "outputs:" + outputs
        println "java:" + java
        println "java.getClass():" + java.getClass()
        println "resources:" + resources
        println "getResources():" + getResources()
        println "=================================="
    }
}
  • 这面是SourceSet集合中常用的属性打印 5.1

二、插件添加的任务

5.2 5.3 5.4

三、多个构建工程

include ':app'
project(":app").projectDir = new File(rootDir, 'chapter2/app')
include ':base'
project(":base").projectDir = new File(rootDir, "chapter2/base")
// 下面就是目录结构
// -- chapter2
// -- --app
// -- -- --build.gradle
// -- -- --src
// -- --base
// -- -- -- base.iml
// -- -- -- builde.gradle
// -- -- -- src
  • 配置好了构建文件,那么就去看一下具体的文件
  • 文件地址;app/build.gradle
dependencies {
    complie project(':base')
}

apply plugin:'java'
  • 可以使用下面的配置对所有的子项目进行配置
subprojects { 
    apply plugin: 'java'
    repositories {
        mavenCentral()
    }
    dependencies {
        testCompile 'junit:junit:4.12'
    }
}

四、发布构建工程结果

apply plugin:'java'
task publishJar(type: Jar)
artifacts {
    archives publishJar
}

// 直接发布一个文件
def publishFile = file('base/AndroidManifest.xml')

artifacts {
    archives publishFile
}

version '1.0.0' // 指定发布的版本号
uploadArchives {
    repositories {
        flatDir {
            name 'libs'
            dirs "$projectDir/libs"
        }
    }
}
// 下面是上传到maven仓库中,在用户目录的.m2/repository中可以找到
group 'org.flysnow.anroidgradlebook.example'
version '1.0.0'
uploadArchives {
    repositories {
        flatDir {
            name 'libs'
            dirs "$projectDir/libs"
        }
        mavenLocal()
    }
}
// 下面是上传到私有的maven仓库中,这里以公司搭建的Nexus私服为例
apply plugin:'maven'

version '1.0.0'
uploadArchives {
    repositories {
        flatDir {
            name 'libs'
            dirs "$projectDir/libs"
        }
        mavenLocal()
        mavenDeployer {
            repository(url: "http://repo.mycompany.com/nexus/content/repositories/releases") {
                authentication(urerName: "username", password: "pwd")
            }
            snapshotRepository(url: "http://repo.mycompany.com/nexus/content/repositories/snapshots") {
                authentication(userName: "username", password: "pwd")
            }
        }
    }
}

五、生成Idea和Eclipse配置

apply plugin:'java'
apply plugin: 'idea'
apply plugin: 'eclipse'

六、android插件

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.5.0'
    }
}
apply plugin: 'com.android.application'
android {
    compileSdkVersion 23
    buildToolsVeresion "23.0.1"
}
  • android{}是一个android提供的一个阔韩类型,可以自定义AndroidGradle工程,上面的buildscript会去jecenter上按照id进行查找插件,然后进行构建。

七、一个完整android构建工程脚本

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.4'
    }
}
apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        applicationId "org.flysnow.app.test"
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testComplie 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:28.0.0'
    compile 'com.android.support:design:23.0.0'
}

八、源码

本文由博客一文多发平台 OpenWrite 发布!