gradle多项目构建

来源:互联网 发布:软件专业论文题目 编辑:程序博客网 时间:2024/05/29 15:16

由于最近在研究多项目构建,查阅了一些博客,感觉不如索性自己看看文档,原文在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:\personalD:\personal>mkdir creating-multi-project-buildsD:\personal>cd creating-multi-project-buildsD:\personal\creating-multi-project-builds>gradle initBUILD SUCCESSFUL in 1s2 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 greeterimport groovy.transform.CompileStatic@CompileStaticclass GreetingFormatter {    static String greeting(final String name) {        "Hello, ${name.capitalize()}"    }}

在src/test/groovy中增加GreetingFormatterSpec类

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

package greeterimport spock.lang.Specificationclass GreetingFormatterSpec extends Specification {    def 'Creating a greeting'() {        expect: 'The greeeting to be correctly capitalized'        GreetingFormatter.greeting('gradlephant') == 'Hello, Gradlephant'    }}

未完待续……

原创粉丝点击