【发布时间】:2017-09-07 01:30:31
【问题描述】:
我有一个项目,由两个 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')
}
问题是我无法从“clients”模块中导入“core”模块中定义的任何类。然而,反之亦然。
这可能是因为我们提到 compile project(':clients') 作为“核心”模块的依赖项。当我将compile project(':core') 作为“客户端”模块的依赖项时,IntelliJ 允许我将“核心”模块中的类导入“客户端”。但是,gradle 然后正确地声称这两个模块之间存在循环构建依赖关系。
总而言之,如何使“核心”中的类在“客户端”内部可访问,而不会将它们作为彼此的编译依赖项。
【问题讨论】:
-
您是否定义了
settings.gradle文件?基本上它应该正常工作。 -
使
clients成为core的子项目。 -
@Opal 我确实有一个
settings.gradle文件,但它只是说include 'core', 'clients'
标签: java scala intellij-idea gradle