私は、build.gradleファイルで次のように定義された2つのgradleプロジェクトで構成されるプロジェクトを持っています。別の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')
}
問題は、私は「クライアントのモジュール内から「コア」モジュール内で定義された任意のクラスをインポートすることができないということです。しかし、それ以外の方法でうまく動作します。 これはおそらく、 'core'モジュールの依存関係としてcompile project(':clients')
と記述されているためです。私がcompile project(':core')
を 'clients'モジュールの依存関係とすると、IntelliJはクラスを 'コア'モジュールから 'clients'にインポートすることができます。しかし、gradleは正当には、これら2つのモジュールの間に循環的な依存関係が存在すると主張する。
「コア」内のクラスを、クライアント間でコンパイル依存関係にすることなくアクセスできるようにする方法をまとめます。
'settings.gradle'ファイルが定義されていますか?基本的にはうまくいくはずです。 – Opal
'' clients'を 'core'のサブプロジェクトにします。 – LazerBanana
@Opal私は 'settings.gradle'ファイルを持っていますが、' include 'core'、 'clients''と書かれています –