我有以下ext.libraries定義,我想公開所有我使用gradle構建的項目。我將如何做到這一點。我可以在哪裏定義它,以便它可以在我的項目中全局使用?定義所有我的gradle項目可以看到的屬性集
我的項目結構如下所示:
--projects
----BaseFrameWork
----ProjectA
----ProjectB
settings.gradle(項目目錄)
includeFlat 'BaseFramework', 'ProjectA', 'ProjectB'
的build.gradle(項目目錄)
ext.libraries = [
lib_core:[
":junit:4.0:",
":log4j:1.2.8:",
":ojdbc6:",
":struts:1.1-tiger:"
],
lib_jaxb: [
":jaxb-api:2.1.3:",
":jaxb-impl:2.1.3:"
]
]
allprojects {
apply plugin: 'java'
}
的build.gradle(BaseFramework DIR)
apply plugin: 'java'
sourceSets.main.java.srcDir 'src/java'
println "The root project is: " + rootProject
compileJava {
options.compilerArgs << '-nowarn'
}
jar {
manifest {
attributes("Implementation-Title": "BaseFramework", "Implementation-Version": "1")
}
from ('./META-INF/') {
include 'DomainConfig.xml'
into('META-INF')
}
}
repositories {
flatDir dirs: "D:/myrepo"
}
dependencies {
compile libraries.lib_commons
compile libraries.lib_core
compile libraries.lib_jaxb
}
我再試試下面的,並得到一個錯誤。它不能在root build.gradle文件中看到我的庫屬性。它也看起來像是看到我的BaseFramework項目爲根?
D:\projects>cd BaseFramework
D:\projects\BaseFramework>gradle build
The root project is: root project 'BaseFramework'
FAILURE: Build failed with an exception.
* Where:
Build file 'D:\prod\BaseFramework\build.gradle' line: 25
* What went wrong:
A problem occurred evaluating root project 'BaseFramework'.
> Could not find property 'libraries' on root project 'BaseFramework'.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Total time: 2.624 secs
D:\projects\BaseFramework>
請幫助:(
'ext.libraries'聲明可以停留在'allprojects'之外,因爲子項目可以看到由父項目聲明的額外變量。 'dependencies'塊應該放在裏面(儘管'subprojects'通常更合適)。 –
並非所有的子項目都有相同的依賴關係:) – n4rzul
你是對的,彼得,相應地修復了我的答案。 –