欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

gradle多项目构建

程序员文章站 2024-01-11 14:55:22
...

由于最近在研究多项目构建,查阅了一些博客,感觉不如索性自己看看文档,原文在https://guides.gradle.org/creating-multi-project-builds/,另附两个链接,
github上有些gradle的项目,供参考,https://github.com/gradle
官网上还有一些英文书籍,https://gradle.org/books/
下为正文。

1. 创建根项目

1.1 创建项目,执行以下命令

C:\Users\Administrator>d:
D:\>cd D:\personal
D:\personal>mkdir creating-multi-project-builds
D:\personal>cd creating-multi-project-builds
D:\personal\creating-multi-project-builds>gradle init

BUILD SUCCESSFUL in 1s
2 actionable tasks: 2 executed

1.2 去掉settings.gradle中自动生成的文件,只留下rootProject.name = ‘creating-multi-project-builds’

1.3 在多项目中,可以在最顶层(根目录下)的构建文件中配置尽可能多的通用属性,让子项目管理自己所需的属性。

1.4 当不带任何参数执行inti task的时候,会生成一个build.gradle文件,文件中注释的内容是一个基本的Java构建配置。
将其中内容替换成下面内容(配置通用的资源库),

allprojects {
    repositories {
        jcenter()
    }
}

1.5 allprojects 中可以配置一些系统属性,被整个子项目以及根项目使用。类似的,subprojects中可以配置一些属性,只能
被子项目使用,例如,为子项目设置统一的版本号,即可在根目录下的build.gradle中设置,

subprojects {
    version = '1.0'
}

2. 创建子项目

2.1 创建greeting-library子项目,控制台执行下面命令,
mkdir greeting-library
在文件下创建build.gradle文件,在文件中添加对groovy的依赖,

apply plugin : 'groovy'
dependencies {
    compile 'org.codehaus.groovy:groovy:2.4.10'
    testCompile 'org.spockframework:spock-core:1.0-groovy-2.4', {
        exclude module : 'groovy-all'
    }
}

修改根目录下的settings.gradle文件,使greeting-library成为多项目构建的一部分。

include 'greeting-library'

在greeting-library增加文件夹src/main/groovy/greeter和src/test/groovy/greeter(这块我是手动创建的),

$ mkdir -p src/main/groovy/greeter
$ mkdir -p src/test/groovy/greeter

在src/main/groovy下增加GreetingFormatter类

greeting-library/src/main/groovy/greeter/GreetingFormatter.groovy

package greeter

import groovy.transform.CompileStatic

@CompileStatic
class GreetingFormatter {
    static String greeting(final String name) {
        "Hello, ${name.capitalize()}"
    }
}

在src/test/groovy中增加GreetingFormatterSpec类

greeting-library/src/test/groovy/greeter/GreetingFormatterSpec.groovy

package greeter

import spock.lang.Specification

class GreetingFormatterSpec extends Specification {

    def 'Creating a greeting'() {

        expect: 'The greeeting to be correctly capitalized'
        GreetingFormatter.greeting('gradlephant') == 'Hello, Gradlephant'

    }
}

未完待续……

更多有趣,好玩的信息请关注我的微信公众号!

gradle多项目构建