我的gradle
项目是一个multi-project
结构。它由两个子项目组成。我在根项目中的build.gradle
如下:
allprojects {
apply plugin: 'eclipse'
}
subprojects {
apply plugin: 'java'
apply plugin: 'maven-publish'
publishing {
repositories {
maven {
name 'myMaven'
def suffix = project.version.endsWith("SNAPSHOT") ? "snapshots" : "releases"
url baseUrl + suffix
}
}
publications {
core(MavenPublication) {
artifactId project.name
artifact jar
}
}
}
}
project(':projectA') {
ext {
sharedManifest = manifest {
attributes("Implementation-Title": project.name,
"Implementation-Version": 1.0 )
}
}
jar {
manifest = project.manifest {
from sharedManifest
}
}
}
project('projectB') {
ext {
sharedManifest = manifest {
attributes("Implementation-Title": project.name,
"Implementation-Version": 2.0 )
}
}
jar {
manifest = project.manifest {
from sharedManifest
}
}
}
在gradle build
之后,我得到了三个构建文件夹。一个在根目录,另一个在相应的子项目中。根项目只是一个没有任何源代码的空文件夹,它只是一个多项目容器。
现在,我不需要创建根构建文件夹,因为它没有用。我在网上和gradle docs / forum中搜索,但未获得任何成功。
有什么办法可以让gradle停止在根级别创建构建文件夹吗?
答案 0 :(得分:3)
build
目录?According to Mark Vieira是Gradle的核心开发人员,每个任务只要创建输出,就负责创建输出目录。
因此,基本上,您的根项目确实有一个build
目录,这意味着它不为空,并且有意在其中写入内容。
在我的工作中,我正在管理一个由根项目组成的大项目,该项目处理许多.gradle
文件,设置文件等以及具有实际代码的许多子项目。当我运行gradle clean build
时,所有子项目都会获得带有libs,binaries等的build
目录,但根项目不会以任何build
目录结尾,因为任何任务都不会在根build
目录。
build
,我该怎么做?只需为根项目设置一个buildFinished
钩子
gradle.buildFinished {
project.buildDir.deleteDir()
}