如何在使用gradle的“编译项目”时排除目录?

时间:2019-09-19 07:50:09

标签: java gradle

我的项目中有两个模块,模块 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的根,我期望整个项目的构建失败,但是什么都没有发生。

P.S。每次运行构建时,我都会清洗已编译的jar,因此不会将其缓存。

1 个答案:

答案 0 :(得分:1)

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

我认为排除事物是一种反模式。我建议将事物分解成较小的部分并将它们结合在一起(例如,“包含”而不是“排除”)

因此,我建议您创建一个“:common”项目,其中“ A”和“ B”都具有依赖性。所有常见的东西都通用,而任何特定的东西都用A或B