Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Gradle build中排除其他子项目的依赖关系?_Java_Eclipse_Gradle_Dependencies_Dependency Management - Fatal编程技术网

Java 如何在Gradle build中排除其他子项目的依赖关系?

Java 如何在Gradle build中排除其他子项目的依赖关系?,java,eclipse,gradle,dependencies,dependency-management,Java,Eclipse,Gradle,Dependencies,Dependency Management,我正在开发一个子项目,它是庞大的多项目Gradle构建的一部分。我需要这些其他子项目中的一些Java类,但我不需要它们拖入的任何依赖项,因为我使用的一些库需要这些类的不同版本 我最初将所需的子项目配置为 compile project(':other_needed_sub_project') 但是在本例中,gradleeclipsetask将项目添加到项目树中。它们的依赖关系出现在类路径上,导致我的应用程序选择错误的版本。在Eclipse中,包含的项目似乎优先于指定的库 作为一个有效的解决方案

我正在开发一个子项目,它是庞大的多项目Gradle构建的一部分。我需要这些其他子项目中的一些Java类,但我不需要它们拖入的任何依赖项,因为我使用的一些库需要这些类的不同版本

我最初将所需的子项目配置为

compile project(':other_needed_sub_project')
但是在本例中,
gradleeclipse
task将项目添加到项目树中。它们的依赖关系出现在类路径上,导致我的应用程序选择错误的版本。在Eclipse中,包含的项目似乎优先于指定的库

作为一个有效的解决方案,我目前使用现有的Maven build构建所需子项目的JAR,然后使用

compile files('../other_needed_sub_project/target/dist/other_needed_sub_project.jar')
这正是我需要的-没有附加LIB。然而,这意味着在使用Gradle构建子项目之前,我必须运行不同的构建


Gradle是否可以构建所需的子项目,然后在我的Eclipse配置中只添加对它们的最终JAR的引用?

您可以排除依赖项的所有可传递依赖项:

compile('groupId:artifactId:version') {
    transitive = false
}
或者你可以,但我当然不建议这样手动排除所有依赖项:

compile('groupId:artifactId:version') {
    exclude module: 'groupId:artifactId:version'
    ...
}

您可以从依赖项中排除模块

dependencies { 
    implementation (project(":sub_project")) {
        exclude group: 'grp1', module: 'mdl1'
        exclude group: 'grp2'
        exclude module: 'mdl2'
    }
}

这被认为是gradleeclipse任务的错误行为。该行为已在即将发布的2.5 gradle版本中修复。您可能想尝试一下最新的gradle夜间构建。另外,您可以在这里找到对更改的完整描述:但这不适用于编译项目(..),这是一个如何回答的问题?@vach您需要一组额外的括号:
compile(project(':other\u needed\u subproject')){transitive=false}