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