有时候构建的java项目包含多个工程项目,这时候与单个的工程项目构建略微不同,需要配置root-project的build.gradle和settings.gradle以及sub-project的build.gradle
example
root-project-settings.gradle
root-project的settings.gradle中定义了root-project和sub-project所在的目录
rootProject.name = 'fabric-chaincode-java'
include 'fabric-chaincode-protos'
include 'fabric-chaincode-shim'
include 'fabric-chaincode-docker'
include 'fabric-chaincode-integration-test'
其中:rootProject.name定义root-project的名字;include 定义子项目的目录
root-project-build.gradle
根项目的配置的内容包括子项目配置、所有项目配置(公共配置)、当前项目配置.其公共配置采用配置注入的方式配置。根项目就像一个容器,子项目会迭代访问它的配置并注入到自己的配置中。
apply plugin: 'idea'
apply plugin: 'eclipse-wtp'
allprojects {
repositories {
mavenLocal()
jcenter()
maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
}
}
subprojects {
apply plugin: 'java'
apply plugin: 'maven'
group = 'org.hyperledger.fabric-chaincode-java'
version = '2.0.0-SNAPSHOT'
sourceCompatibility = 1.8
targetCompatibility = 1.8
dependencies {
compile 'commons-cli:commons-cli:1.4'
compile 'commons-logging:commons-logging:1.2'
testCompile 'junit:junit:4.12'
testCompile 'org.hamcrest:hamcrest-library:1.3'
testCompile 'org.mockito:mockito-core:2.23.0'
testCompile 'com.github.stefanbirkner:system-rules:1.17.0'
}
}
其中:subprojects:定义了子项目的公共配置;allprojects定义了所有项目的配置.子项目的配置可以覆盖公共配置
sub-project-build.gradle
项目依赖
同一个构建中可以建立工程依赖,一个工程的 jar 包可以提供给另外一个工程使用。该项目依赖于fabric-chaincode-protos项目的代码
dependencies {
compile project(':fabric-chaincode-protos')
compile 'io.netty:netty-tcnative-boringssl-static:2.0.15.Final'
compile 'org.bouncycastle:bcpkix-jdk15on:1.60'
compile 'org.bouncycastle:bcprov-jdk15on:1.60'
}