我的 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 停止在根级别创建构建文件夹?
最佳答案
谁负责build
目录创建?
According to Mark Vieira ,一个 Gradle 核心开发者,每个任务只要创建输出就负责创建输出目录。
所以基本上,你的根项目确实有一个 build
dir,这意味着它不是空的,并且是故意写入的东西。
在我的工作中,我正在管理一个由根项目构成的大项目,它处理许多 .gradle
文件、设置文件等以及许多带有实际代码的子项目。当我运行 gradle clean build
,所有子项目都有自己的build
带有库、二进制文件等的目录,但根项目没有以任何 build
结尾dir 因为没有任何任务将输出写入根目录 build
目录
我该怎么做才能删除根 build
dir,创建它的任何任务?
只需设置一个buildFinished
Hook 仅适用于根项目
gradle.buildFinished {
project.buildDir.deleteDir()
}
关于gradle:禁止在多项目应用程序的根目录创建构建文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51518039/