하위 프로젝트가있는 프로젝트가 있습니다. 레이아웃 :
--subproj1
---- mybuild.number
--subproj2
--build.gradle
--gradle.properties
--settings.gradleGradle 프로젝트, 반복적으로 실행되는 하위 프로젝트
rootproj
mybuild.number
#Build Number for ANT. Do not edit!
#Wed Nov 210 2121:210:2121 PST 2102121
build.number=1
settings.gradle
include ('subproj1', 'subproj2')
build.gradle
allprojects {
repositories {
mavenLocal()
maven {url "http://repo1.maven.org/maven2"}
}
}
subprojects {
project (':subproj1') {
def oldN = new File("D:/rootproj/subproj1/mybuild.number").text.split("=")[1]
def newN = (oldN.toInteger() + 1).toString()
ant.replace(
file: "mybuild.number",
token: "${oldN}",
value: "${newN}"
)
println "From subproj1 : ${newN}"
task hello(overwrite: true){
doLast{
println "hello from subproject 1"
}
}
}
project (':subproj2'){
println "the build Dir: $buildDir"
task hello(overwrite: true){
doLast{
println "hello from subproject 2"
}
}
}
}
내가 실행
Gradle을 -q subproj1 : 안녕하세요
또는
Gradle을 -q subproj2 안녕하세요
또는
Gradle을
행 루트 프로, 나는 항상 예를 들어.
.... subproj1에서
: 24
빌드 디렉터리 : D : 25
빌드 디렉터리 : D : \ rootproj \ subproj2 \ \ rootproj \ subproj2 \ subproj1에서
를 구축 두 개의 하위 프로젝트는 항상 때문에 빌드 번호가 두 배 증가, 두 번 실행 얻을 왜
1. 대신 한 번 구축?
2. 프로젝트 : 명령 줄에서 작업을 명시 적으로 지정 했는데도 모든 하위 프로젝트가 실행되는 이유는 무엇입니까?
인터넷을 검색했지만 유용한 정보를 찾을 수 없습니다.
미리 도움을 주셔서 감사합니다.
편집 : 변경 빌드[email protected] Nizet로 Gradle을 제안 :
- 이동합니다 ant.replace이 하위
내가 예상 한대로 정확히 작동
allprojects {
repositories {
mavenLocal()
maven {url "http://repo1.maven.org/maven2"}
}
}
//subprojects {
def oldN = new File("E:/hqin/build/gradle/rootproj/subproj1/mybuild.number").text.split("=")[1]
def newN = (oldN.toInteger() + 1).toString()
project (':subproj1') {
task incr {
doLast{
ant.replace(
file: "mybuild.number",
token: "${oldN}",
value: "${newN}"
)
}
println "From subproj1 : ${newN}"
}
task hello(overwrite: true, dependsOn: 'incr'){
doLast{
println "hello from subproject 1"
}
}
}
project (':subproj2'){
task hello(overwrite: true){
doLast{
println "the build Dir: $buildDir"
println "hello from subproject 2"
}
}
}
//}
위대한! 내가 제안한대로 build.gradle 파일을 수정하여 예상대로 작동합니다. 감사! – Heinz
후속 질문이 있습니다. gradle -q : subproj2 : hello를 실행하면 subproj1과 해당 작업 incr이 실행됩니다. 어떻게 피할 수 있습니까? – Heinz
실행 되었습니까, 아니면 구성되어 있습니까? println "From subproj1 : $ {newN}"은 실행 단계에서 실행되지 않고 실행 단계 –