0

ace2依存しているコア プロジェクトを含むマルチプロジェクト プロジェクトがあります。依存関係があります。dataentry2構成を使用している場合でも、推移的な依存関係が他のプロジェクト、戦争のweb-inf\libディレクトリに到達しないようにできないようですprovided(はい、compileetc..依存関係が含まれている必要があります)。それ以上に、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')
    } 
}

また、プロジェクト内にあるすべてのものをace2ace2 独自の .xml で試しましたbuild.gradle

「noExportConfigurations を尊重する必要があります」という問題を解決できればtestCompiletestRuntimeをに追加でき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
4

0 に答える 0