いくつかのWARファイルをコンパイルしようとしていますが、それらはすべて共通のJARモジュールに依存しています。ただし、Gradleビルドでは、Javaプラグインで動作する「Provided」のような依存関係を取得できないようです。
私のコンパイルは次のようになります。
apply plugin: 'java'
configurations{
providedCompile
}
dependencies {
compile module("org.springframework.amqp:spring-amqp:${springAmqpVersion}")
compile module("org.slf4j:slf4j-api:${slf4jVersion}")
compile module("org.slf4j:slf4j-ext:${slf4jVersion}")
providedCompile "javax.servlet:servlet-api:${servletApiVersion}"
runtime module("org.slf4j:jcl-over-slf4j:${slf4jVersion}")
runtime module("org.slf4j:jul-to-slf4j:${slf4jVersion}")
runtime module("org.slf4j:log4j-over-slf4j:${slf4jVersion}")
sourceArchives module("org.springframework.amqp:spring-amqp:${springAmqpVersion}:sources")
sourceArchives module("javax.servlet:servlet-api:${servletApiVersion}:sources")
}
sourceSets {
main { compileClasspath += configurations.providedCompile }
}
ただし、その最後のビットは例外を取得する場所です。ランタイム依存関係によってサーブレットAPI(Tomcatが提供)を構成に追加するか、コンパイルモジュールとして配置し、後でランタイム依存関係から削除してみました。
依存関係を変更するいくつかの異なる方法を試しましたが、最も近い結果は次のとおりです。
newRuntime = configurations.runtime.minus(configurations.providedCompile)
configurations.runtime = newRuntime
ただし、この最後のビットは、適切な依存関係を持つ変数newRuntimeを生成しますが、変数をランタイム構成に再割り当てしようとすると、「プロパティの例外が見つかりません」がスローされます。
Gradleのバグ追跡でこの正確な問題について多くの議論を見つけました:Gradle-784
ただし、そこからの主なリードは、私がよく知らないGradleビルドでMavenを使用するSpringからのものです。
私がここSOで見つけた最も有望なリンクですが、残念ながら、例をうまく機能させることができませんでした 。
//Include provided for compilation
sourceSets.main.compileClasspath += configurations.provided
この行は他の試みのようにエラーを出しませんが、コンパイルが試みられるとクラスパスエラーが発生するため、providedCompile(提供された私のバージョン)の依存関係は実際にはコンパイルクラスパスに置かれないようです。