Gradle + Eclipse + Multiproject: Как не экспортировать предоставленные JAR-файлы, являющиеся зависимостями зависимости?

У меня есть мультипроектный проект с основным проектом ace2 это зависит от; у него есть зависимости. Я не могу заставить транзитивные зависимости НЕ попасть в другой проект dataentry2Война web-inf\lib каталог даже при использовании provided конфигурация (да, я хочу compile и т.д.. зависимости включены). Более того, отмеченные зависимости 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 build.gradle,

Если я смогу решить проблему "noExportConfigurations должно учитываться", я мог бы добавить testCompile, testRuntime в noExportConfigurations,

Есть идеи почему noExportConfigurations (или что бы то ни было) не работает для меня?

Я думаю, что расположение noExportConfigurations внутри :ace2 Проект отличается от затмения в другом проекте. Я попытался переместить это наружу в верхний уровень мастер-проекта build.gradle но я не знаю синтаксис. Следующее НЕ РАБОТАЕТ:

noExportConfigurations += [ project(':ace2').configurations.provided ]
  • ОС: Windows 8
  • Java: 1,8
  • Gradle (командная строка): 2,4
  • Eclipse: STS 3.6.4 (Eclipse 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 > Щелкните правой кнопкой мыши в области проекта> Export > War, выбрав веб-проект 'apir' и некоторый файл назначения. Этот.war содержит банки с котами и джунтами.

Не могли бы вы попробовать это - есть https://github.com/oehm-smith/gradleMultiprojectProvided/blob/master/README.md

Мультипроект Gradle с предоставленной областью / конфигурацией. Запуск войны из CL создает.war без банок, помеченных как "предоставлено". Но запустите Eclipse > Run On Tomcat, и предоставленные и тестовые файлы перейдут в 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

0 ответов

Другие вопросы по тегам