如何在 Gradle 构建中排除其他子项目的依赖?
How to exclude dependencies of other subproject in Gradle build?
我正在开发一个子项目,它是庞大的多项目 Gradle 构建的一部分。我需要来自这些其他子项目的一些 Java classes,但我不需要它们拖入的任何依赖项,因为我使用的某些库需要这些的不同版本。
我最初将需要的子项目配置为
compile project(':other_needed_sub_project')
但是在这种情况下 gradle eclipse
任务将项目添加到项目树中。它们的依赖项出现在 class 路径上,导致我的应用程序选择了错误的版本。在 Eclipse 中,包含的项目似乎优先于指定的库。
作为一个可行的解决方案,我目前使用现有的 Maven 构建构建所需子项目的 jar,然后使用
compile files('../other_needed_sub_project/target/dist/other_needed_sub_project.jar')
这正是我需要的——没有附加库。然而,这意味着在使用 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'
}
}
我正在开发一个子项目,它是庞大的多项目 Gradle 构建的一部分。我需要来自这些其他子项目的一些 Java classes,但我不需要它们拖入的任何依赖项,因为我使用的某些库需要这些的不同版本。
我最初将需要的子项目配置为
compile project(':other_needed_sub_project')
但是在这种情况下 gradle eclipse
任务将项目添加到项目树中。它们的依赖项出现在 class 路径上,导致我的应用程序选择了错误的版本。在 Eclipse 中,包含的项目似乎优先于指定的库。
作为一个可行的解决方案,我目前使用现有的 Maven 构建构建所需子项目的 jar,然后使用
compile files('../other_needed_sub_project/target/dist/other_needed_sub_project.jar')
这正是我需要的——没有附加库。然而,这意味着在使用 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'
}
}