Създаване на дебел буркан в Gradle

Тази статия е част от поредица: • Въведение в Gradle

• Ant срещу Maven срещу Gradle

• Писане на потребителски приставки Gradle

• Създаване на дебел буркан в Gradle (текуща статия)

1. Общ преглед

В тази бърза статия ще разгледаме създаването на „дебел буркан“ в Gradle.

По принцип, дебел буркан (известен също като uber-jar) е самодостатъчен архив, който съдържа както класове, така и зависимости, необходими за стартиране на приложение.

2. Първоначална настройка

Нека започнем с прост файл build.gradle за проект на Java с две зависимости:

apply plugin: 'java' repositories { mavenCentral() } dependencies { compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.25' compile group: 'org.slf4j', name: 'slf4j-simple', version: '1.7.25' }

3. Използване на Jar Task от приставката Java

Нека започнем с модифициране на задачата от jar от приставката Java Gradle. По подразбиране тази задача създава буркани без никакви зависимости.

Можем да презапишем това поведение, като добавим няколко реда код. Имаме нужда от две неща, за да работи:

  • на Main-Class атрибут във файла на манифеста
  • Включете буркани за зависимости

Нека добавим няколко модификации към задачата Gradle:

jar { manifest { attributes "Main-Class": "com.baeldung.fatjar.Application" } from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } }

4. Създаване на отделна задача

Ако искаме да оставим оригиналната задача в буркан такава, каквато е, можем да създадем отделна, която да върши същата работа.

Следният код ще добави нова задача, наречена customFatJar:

task customFatJar(type: Jar) { manifest { attributes 'Main-Class': 'com.baeldung.fatjar.Application' } baseName = 'all-in-one-jar' from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } with jar }

5. Използване на специални приставки

Също така можем да използваме съществуващите приставки Gradle, за да създадем дебел буркан.

В този пример ще използваме приставката Shadow:

buildscript { repositories { jcenter() } dependencies { classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.1' } } apply plugin: 'java' apply plugin: 'com.github.johnrengelman.shadow'

След като приложим приставката Shadow, задачата shadowJar ще бъде готова за използване.

6. Заключение

В този урок представихме няколко различни начина за създаване на дебели буркани в Gradle. Заменихме задачата по подразбиране на jar, създадохме отделна задача и използвахме плъгина сянка.

Кой подход се препоръчва? Отговорът е - зависи.

В прости проекти е достатъчно да се отмени задачата по подразбиране на jar или да се създаде нова. Но с напредването на проекта ние силно препоръчваме да използвате плъгини, тъй като те вече са разрешили по-трудни проблеми като конфликти с външни META-INF файлове.

Както винаги, пълното изпълнение на този урок може да бъде намерено в GitHub.

« Предишно писане на потребителски приставки Gradle