gpt4 book ai didi

java - 从不同的 gradle 模块导入类

转载 作者:行者123 更新时间:2023-11-30 07:52:16 29 4
gpt4 key购买 nike

我有一个项目由两个 gradle 项目组成,在 build.gradle 文件中定义如下。

project(':clients') {
archivesBaseName = "clients"

dependencies {
compile libs.lz4
compile libs.snappy
compile libs.slf4jApi

testRuntime libs.slf4jlog4j
}

jar {
dependsOn createVersionFile
from("$buildDir") {
include "proj/$buildVersionFileName"
}
}

}

project(':core') {
apply plugin: 'scala'
apply plugin: "org.scoverage"
archivesBaseName = "proj_${versions.baseScala}"

dependencies {
compile project(':clients')
compile libs.joptSimple
compile libs.metrics
compile libs.scala
compile libs.slf4jlog4j
compile libs.zkclient
compile libs.zookeeper
compile libs.scalaParserCombinators

}

tasks.create(name: "copyDependantLibs", type: Copy) {
from (configurations.testRuntime) {
include('slf4j-log4j12*')
}
from (configurations.runtime) {
exclude('kafka-clients*')
}
into "$buildDir/dependant-libs-${versions.scala}"
duplicatesStrategy 'exclude'
}

jar {
dependsOn('copyDependantLibs')
}

tasks.create(name: "copyDependantTestLibs", type: Copy) {
from (configurations.testRuntime) {
include('*.jar')
}
into "$buildDir/dependant-testlibs"
duplicatesStrategy 'exclude'
}

systemTestLibs.dependsOn('jar', 'testJar', 'copyDependantTestLibs')

}

问题是我无法从“客户端”模块中导入“核心”模块中定义的任何类。但是,反之亦然。这可能是因为我们提到 compile project(':clients') 作为“核心”模块的依赖项。当我将 compile project(':core') 作为“clients”模块的依赖项时,IntelliJ 允许我将类从“core”模块导入到“clients”中。然而,gradle 然后正确地声称这两个模块之间存在循环构建依赖性。

总而言之,如何使“核心”中的类在“客户端”内部可访问,而不将它们作为彼此的编译依赖项。

最佳答案

we mention compile project(':clients') as a dependency for the 'core' module

为什么需要这个?如果这样做,则不能使用 core 中的类在 clients , 因为要编译它们你需要编译 clients首先,但要编译clients你需要来自 core 的类(class)等

如果您只需要来自 clients 的一些特定类在 core , 你可以将它们移动到第三个模块中 clientcore取决于。或者对来自 core 的类做同样的事情你需要的 clients .

如果您在特定类之间存在循环依赖(例如类 A 来自 core 需要从 B 导入 clients ,这需要再次导入 A;循环可能包含超过 2 个类),那么它们必须在一个模块中。

关于java - 从不同的 gradle 模块导入类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46086537/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com