Gradle: построение жирной войны с баночными зависимостями - PullRequest
0 голосов
/ 22 февраля 2019

Я пытаюсь перейти с Ant + Ivy на Gradle и не могу правильно включить транзитивные зависимости.

Например, у меня есть следующая зависимость Ivy:

<dependency org="org.springframework" name="spring-jdbc" rev="4.2.0.RELEASE"/>

Как показывает отчет Ivy, этот артефакт зависит от spring-tx, который извлекается Ivy и помещается в WEB-INF/lib в виде банки.Но Gradle не делает этого по умолчанию, и этот код тоже не справляется (он просто не помещает туда spring-tx связанных .class файлов):

from { configurations.compileClasspath
            .findAll { !it.name.endsWith('pom') }
            .collect { it.isDirectory() ? it : zipTree(it) } } {
        into('WEB-INF/classes')
    }

Кто-нибудь знаеткак я могу включить переходные зависимости в качестве jar-файлов и поместить их в WEB-INF\lib?

1 Ответ

0 голосов
/ 22 февраля 2019

Для этого можно использовать плагин Gradle war (см. Документация по военному плагину ).

Ниже приведен очень простой пример build.gradle скрипта, который создаст war со всеми необходимыми зависимостями (и транзитивными зависимостями) в /WEB-INF/lib

plugins{
    id "war"
}

repositories {
    mavenCentral()
}

dependencies{    
    implementation group: 'org.springframework', name: 'spring-jdbc', version: '4.2.0.RELEASE'

}

war, созданный с ./gradlew build, будет содержать все библиотеки spring-jdbc и их зависимости (spring-beans, spring-core, spring-tx ...) в папке / WEB-INF / lib .

...