![](/img/trans.png)
[英]How to configure every Kotlin project in Gradle multi-project build?
[英]How to use variables in a multi-project gradle build system?
我有一個用 gradle 管理的多項目結構。 所有 java 子項目都有這個jar
塊:
def main_class = "foo.Main"
jar {
manifest {
attributes 'Main-Class': main_class
}
}
所以我決定將jar塊移到根項目中, def main_class
中只有def main_class
,但是無論我如何定義main_class
變量,它都不起作用。 我也試過project.ext
和properties {}
。
我有一個名為dist
的任務,它與project.ext
一起工作:
根項目:
subprojects {
task dist(dependsOn: jar) << {
copy {
from('build/libs') {
include (build_jar)
}
into('.')
rename(build_jar, app_jar)
}
}
}
一個子項目:
project.ext {
build_jar = "..."
app_jar = "..."
}
我如何定義一個像dist
任務一樣與jar
一起使用的變量?
你可以這樣做:
ext {
main_class = 'com.Main'
}
subprojects {
apply plugin: 'java'
jar {
manifest {
attributes 'Main-Class': main_class
}
}
}
在PROJECT_ROOT/build.gradle
文件中。
要覆蓋子項目的 build.gradle 中的額外屬性,您必須將所需的任務(在本例中為jar task
)放在afterEvaluate
塊中。
根項目 build.gradle:
subprojects {
apply plugin: 'java'
apply plugin: 'application'
ext {
// the property that should be overridden in suproject's build.gradle
main_class = ''
}
afterEvaluate {
jar {
manifest {
attributes 'Main-Class': main_class
}
}
}
}
子項目 build.gradle:
mainClassName = 'project.specific.Main'
ext.set("main_class", mainClassName)
// you could also use this notation, but I prefer the first one
// since it is more clear on what it is doing
//main_class = mainClassName
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.