多个子项目的构建

初始化

gradle init 会创建build.gradle和settings.gradle,并且执行wrapper这个task。

allprojects

allprojects块会应用到所有子项目以及root项目。

subprojects

subprojects块会应用到所有子项目,但不包括root项目。

application

apply plugin : 'application'

应用入口:mainClassName

mainClassName = 'greeter.Greeter'

依赖子项目

dependencies {
	compile project(':greeting-library')
}

运行子项目的task

./gradlew :greeter:test

文档

plugins {
  id 'org.asciidoctor.convert' version '1.5.6' apply false 
}

docs子项目:

apply plugin : 'org.asciidoctor.convert' 

asciidoctor {
    sources {
        include 'greeter.adoc' 
    }
}

build.dependsOn 'asciidoctor'

docs/src/docs/asciidoc/greeter.adoc:

= Greeter Command-line Application

A simple application demonstrating the flexibility of a Gradle multi-project.

== Installation

Unpack the ZIP or TAR file in a suitable location

== Usage

[listing]
----
$ cd greeter-1.0
$ ./bin/greeter gradlephant

Hello, Gradlephant
----

执行asciidoctor 这个task就会生成文档

在发布包中包含文档

distZip {
    from project(':docs').asciidoctor, { 
        into "${project.name}-${version}"
    }
}
distTar {
    from project(':docs').asciidoctor, {
        into "${project.name}-${version}"
    }
}

通过project(:NAME).TASKNAME引用其他项目的任务

configure

configure(subprojects.findAll {it.name == 'greeter' || it.name == 'greeting-library'} ) { 

    apply plugin : 'groovy'

    dependencies {
        testCompile 'org.spockframework:spock-core:1.0-groovy-2.4', {
            exclude module : 'groovy-all'
        }
    }
}
posted @ 2018-02-12 15:30  JavaMG  阅读(153)  评论(0)    收藏  举报