1.源碼集合[SourceSet]概念
SourceSet—源代碼集合,是Java插件用來描述和管理源代碼及其資源的一個抽象概念,是一個Java源代碼檔案和資源檔案的集合。通過源集,我們可以非常友善地通路源代碼目錄,設定源集的屬性,更改源集的Java目錄或者資源目錄等。
有了源集,我們就能針對不同的業務和應用對我們源代碼進行分組,比如用于主要業務産品的main以及用于單元測試的test,職責分明。它們兩個也是Java插件預設内置的兩個标準源集。
Java插件在Project下為我們提供了一個sourceSets屬性以及一個sourceSet{}閉包來通路和配置源集。sourceSets是一個SourceSetContainer,我們可以查閱它對的API看它有哪些方法和屬性供我們使用。sourceSets{}閉包配置的都是SourceSet對象。
apply plugin:’java’
sourceSets{
main{
//這裡對main SourceSet配置
}
}
task ex{
sourceSets.all{
println name
}
}
源集有很多屬性,通過這些屬性我們可以很友善的通路或者對源集進行配置。
常用源集屬性:
屬性名
類型
描述
name
String
它是隻讀的,比如main
output.classesDir
File
該源集編譯後的class檔案目錄
output.resourcesDir
File
編譯後生成的資源目錄
compileClasspath
FileCollection
編譯該源集時所需的classpath
java
SourceDirectorySet
該源集的Java源檔案
java.srcDirs
Set
該源集的Java源檔案所在目錄
resources
SourceDirectorySet
該源集的資源檔案
resources.srcDirs Set 該源集的資源檔案所在目錄
我們看一下如何使用它們。比如我想更改我的源代碼的存放目錄,不想放在src/main/java目錄下:
sourceSets{
main{
java{
srcDir ’src/java'
}
}
}
同理我們也可以修改資源檔案的存放目錄:
sourceSets{
main{
resources{
srcDir ’src/resources'
}
}
}
定義新的源集隻需要在sourceSets{}閉包裡添加即可。