如何在使用 gradle "compile project"时排除目录?



我的项目中有两个模块,模块A依赖于模块B。 为了使用Gradle构建它,我在 A 的build.gradle文件中使用了一个简单的代码:

compile project(":B")

我的问题是资源目录冲突。 我想做的是排除某些 B 的模块"资源"目录。

我尝试过:

compile (project(":B")) {
exclude group : 'src.main', module : 'resources'
}

我也尝试过:

compile(project(":B")) {
exclude module: 'src'
exclude module: 'main'
exclude module: 'src/main'
exclude module: 'src.main'
}

通过排除模块 B 的根,我希望整个项目的构建失败,但没有任何反应。

附言每次我运行 build 时,我都会清理编译的 jar,这样它们就不会被缓存。

Gradle 模块不是这样工作的。Java 模块是编译的类加上资源。您只能使用尝试的排除方法排除依赖项(即整个模块或 jar(。您不能排除依赖项的特定部分(例如目录(

在我看来,排除事物是一种反模式。我建议将事物分解成更小的部分并将它们连接在一起(即"包含"而不是"排除"(

所以我建议你创建一个":common"项目,"A"和"B"都有作为依赖关系。所有常见的东西都是共同的,任何特定的东西都在A或B中

以下对我有用。

android {
...
applicationVariants.all { variant ->
if (variant.buildType == 'release') {
variant.mergeAssetsProvider.configure {
doLast {
delete(fileTree(dir: outputDir, include: ["**/directoryToExclude/**", "**/fileToExclude.extension"]))
}
}
}
}
}

最新更新