3

この構造に似たGradleマルチプロジェクトを作成しようとしています

ouat-services
  - ouat-contract
  - ouat-servicesImpl (web project)

Eclipse の例に従い、ouat-services の settings.gradle を次のように定義します。

include "ouat-contract", "ouat-servicesImpl"

私の ouat-servicesImpl build-gradle で定義します

dependencies {
  compile project(':ouat-contract')
}

ouat-servicesImpl で war プラグインを適用しようとすると、問題が発生します。Eclipse の問題ビューに次のメッセージが表示されます。

Invalid classpath publish/ export dependency /ouat-contract. Project entries not supported

私のouat-services build.gradle

configure(subprojects) {

  apply plugin: 'com.github.ben-manes.versions'
  apply plugin: 'eclipse'
  apply plugin: 'java'

  version = '1.0'

  sourceCompatibility = 1.8
  targetCompatibility = 1.8

  def defaultEncoding = 'UTF-8'
  [compileJava, compileTestJava]*.options*.encoding = defaultEncoding

  repositories {

    jcenter()
    mavenLocal()
    mavenCentral()
  }

  jar {
    manifest.attributes provider: 'Company'
  }
}

configure(project(':ouat-servicesImpl')) {

  apply plugin: 'checkstyle'
  apply plugin: 'eclipse-wtp'
  apply plugin: 'findbugs'
  apply plugin: 'jacoco'
  //apply plugin: 'jetty'
  apply plugin: 'pmd'
  apply plugin: 'war'
}

buildscript {

  repositories {

    jcenter()
    mavenCentral()
    mavenLocal()
  }

  dependencies {
    classpath 'com.github.ben-manes:gradle-versions-plugin:0.10.1'
  }
}

私の ouat-servicesImpl ビルド gradle は次のように変更されました。

dependencies {

  compile project(':ouat-contract')

  cxfArtifacts.each { artifact ->
    compile "org.apache.cxf:$artifact:$cxfVersion"
  }

  springArtifacts.each { artifact ->
    compile "org.springframework:$artifact:$springVersion"
  }

  testCompile "org.testng:testng:$testNGVersion"
  testCompile "org.hamcrest:hamcrest-all:$hamcrestVersion"
  testCompile "org.springframework:spring-test:$springVersion"

  //WAR PLUGIN
  providedCompile "javax.servlet:javax.servlet-api:$servletAPIVersion"
  runtime "javax.servlet:jstl:$jstlVersion"
}

これはEclipseプラグインの問題ですか、それとも何か間違っていますか?

4

4 に答える 4

0

私もずっと前にこの問題に遭遇しました。どうやら「Gradle IDE Pack」に同梱されているEclipseプラグインに関係する問題のようです(コマンドラインからは問題なく動作します)。私のセットアップはおそらくあなたのものよりもはるかに複雑です(あるトップレベルのgradleプロジェクトから別のトップレベルのgradleプロジェクトにモジュールを含めています)が、この特定のエラーを克服するために

Invalid classpath publish/ export dependency /my-project. Project entries not supported

...特定のgradleプロパティが欠落している場合、プロジェクトの依存関係を除外しました:

if(project.hasProperty("myProjectRefAddedFromIDE")) {
    println "NB! Build script started with property 'myProjectRefAddedFromIDE' - expecting that this project in IDE is configured to add the direct reference to my-project"
} else {
    compile project(':my-project')
}

また、IDE からのみプロパティ「myProjectRefAddedFromIDE」を追加するために、次のように Eclipse プラグインを構成しました: ウィンドウ -> 設定 -> Gradle -> 引数 -> プログラム引数 -> 使用: '-PmyProjectRefAddedFromIDE'

警告:これはおそらくうまくいくでしょうが、単純なマルチモジュールプロジェクト(別のマルチモジュールプロジェクトからのモジュールを含まない)に関しては、セットアップに他の問題がある可能性があります。使用する必要はありませんこの回避策。

于 2015-06-04T12:35:26.643 に答える