[pravega-006]pravega源码分析--gradle多子项目demo

1.pravega用gradle多子项目方式进行编译。本文实现一个极简demo以便理解。

2.root project是MultiSubProject。下面有两个子项目,SubProj1和SubProj2。SubProj1定义了一个Book类。SubProj2定义了Store类和Main类,其中Main类是运行入口,其中Store类和Main类import了SubProj1的Book类。

3.项目目录结构

├── build.gradle
├── gradle
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
├── SubProj1
│   ├── build.gradle
│   └── src
│       ├── main
│       │   └── java
│       │       └── com
│       │           └── brian
│       │               └── demo
│       │                   └── gradle
│       │                       └── commen
│       │                           └── Book.java
│       └── test
└── SubProj2
    ├── build.gradle
    └── src
        └── main
            └── java
                └── com
                    └── brian
                        └── demo
                            └── gradle
                                └── comm2
                                    ├── Main.java
                                    └── Store.java
 

4 ./setting.gradle文件内容如下

rootProject.name = 'MultiSubProject'

include 'SubProj1', 'SubProj2'

5 ./build.gradle文件内容如下

group 'com.brian.demo.gradle'

//多 subproject 操作
Closure cl = {task -> println "I'm $task.project.name"}
//包括root project在内的所有projects都有hello task
allprojects{
    apply plugin: 'java'
    sourceCompatibility = 1.8
    version '1.0-SNAPSHOT'
    repositories {
        mavenCentral()
    }

    task hello << cl
}

subprojects{
   hello << { println "-I'm subproject"}
}

//子项目的依赖性
project(':SubProj2'){
    dependencies {
        compile project(':SubProj1')
    }
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

6 Book.java内容如下:

package com.brian.demo.gradle.commen;

public class Book {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Book(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Book{" +
                "name='" + name + '\'' +
                '}';
    }
}

7.Store.java文件内容如下:

package com.brian.demo.gradle.comm2;

import com.brian.demo.gradle.commen.Book;

public class Store {
    private String name;
    private Book book;

    public Store(String name, Book book) {
        this.name = name;
        this.book = book;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Book getBook() {
        return book;
    }

    public void setBook(Book book) {
        this.book = book;
    }

    @Override
    public String toString() {
        return "Store{" +
                "name='" + name + '\'' +
                ", book=" + book +
                '}';
    }
}

8.Main.java文件内容如下:

package com.brian.demo.gradle.comm2;

import com.brian.demo.gradle.commen.Book;

public class Main {

    public static void main(String[] args){
        System.out.println("hi");
        Book book = new Book("world");
        Store store = new Store("aStore", book);
        System.out.println(book);
        System.out.println(store);
    }
}

9 SubProj1/build.gradle文件内容如下:

hello.doLast {println "--I'm subproj1 last"}

10 SubProj2/build.gradle文件内容如下:

hello.doLast {println "--I'm subproj2 last"}

11 运行 ./gradlew build即可编译运行

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值