ace2
依存しているコア プロジェクトを含むマルチプロジェクト プロジェクトがあります。依存関係があります。dataentry2
構成を使用している場合でも、推移的な依存関係が他のプロジェクト、戦争のweb-inf\lib
ディレクトリに到達しないようにできないようですprovided
(はい、compile
etc..依存関係が含まれている必要があります)。それ以上に、testCompile
/とマークされた依存関係testRuntime
もそこに行き着きます。したがって、ここで重要な何かが欠けているようです。
マスタープロジェクト:
allprojects {
apply plugin: 'java'
apply plugin: 'eclipse-wtp'
repositories {
mavenCentral()
}
}
project(':ace2') {
configurations {
provided
}
sourceSets {
main.compileClasspath += configurations.provided
test.compileClasspath += configurations.provided
test.runtimeClasspath += configurations.provided
}
eclipse {
classpath {
//Add the provided configuration items to the Eclipse classpath
plusConfigurations += [ configurations.provided ]
//But don't export them
noExportConfigurations += [ configurations.provided ]
}
}
dependencies {
compile('org.apache.poi:poi:3.11')
compile('org.apache.poi:poi-ooxml:3.11')
....
provided "org.apache.tomcat:tomcat-catalina:8.0.22"
....
testCompile('junit:junit:4.12')
}
}
project(':dataentry2') {
apply plugin: 'war'
dependencies {
compile project(':ace2')
}
}
また、プロジェクト内にあるすべてのものをace2
ace2 独自の .xml で試しましたbuild.gradle
。
「noExportConfigurations を尊重する必要があります」という問題を解決できればtestCompile
、testRuntime
をに追加できnoExportConfigurations
ます。
なぜnoExportConfigurations
(またはそれが何であれ)うまくいかない理由はありますか?
noExportConfigurations
プロジェクト内の場所は、:ace2
別のプロジェクトのEclipseとは別のスコープであると考えています。これをマスター プロジェクトの最上位に移動しようとしましたbuild.gradle
が、構文がわかりません。以下は機能しません:
noExportConfigurations += [ project(':ace2').configurations.provided ]
- OS: Windows8
- ジャワ:1.8
- Gradle (コマンドライン): 2.4
- エクリプス: STS 3.6.4 (エクリプス 4.4.2)
- Eclipse Gradle: Gradle IDE 3.6.4.201503050952-RELEASE org.springsource.ide.eclipse.gradle.feature.feature.group Pivotal Software, Inc.
コメントありがとうございます。https://github.com/oehm-smith/gradleMultiprojectProvidedで必要最小限の例を作成しましたが、これはうまくいきません。
あなたのコメントに続いて、私は Eclipse > プロジェクト エリアで右クリック > エクスポート > War を実行し、'apir' Web プロジェクトといくつかの宛先ファイルを選択しました。この .war には、Tomcat および Junit jar が含まれています。
それを試していただけますか - https://github.com/oehm-smith/gradleMultiprojectProvided/blob/master/README.mdがあります
提供されたスコープ/構成を持つGradleマルチプロジェクト。CL から war を実行すると、'provided' とマークされた jar のない .war が作成されます。ただし、Eclipse > Run On Tomcat を実行すると、提供された jar とテスト jar が webinf/lib に移動します。
1. cd master
2. gradle war
3. jar tvf ../apir/build/libs/apir.war | grep jar
4. Observe no 'tomcat' jars are in the war
今Eclipseで行います:
1. In Eclipse with Gradle plugin ...
right-click > import > gradle and select the master project > build > select > ok
2. Choose 'apir' project > right-click > run on server > piviol tc Server is fine to use (or Tomcat)
3. Choose 'pivotal tc Server ' > Browse Deployment Location
4. Observe there ARE 'tomcat' jars in the wtpwebapps/apir/WEB-INF/lib directory