Глава 51. Плагин Ear.

Плагин Ear добавляет поддержку объединения файлов ear вэб-приложения. Он добавляет задачу архивирования по умолчанию - ear. Для него не требуется плагин Java, но в проектах, использующих плагин Java, отключается генерация архива jar по умолчанию.

51.1. Использование.

Для использования плагина Ear, включите следующую строку в ваш сборочный скрипт:

Пример 51.1. Использование плагина Ear

build.gradle

apply plugin: 'ear'
	  

51.2. Задачи.

Плагин Ear добавляет следующие задачи к проекту.

Таблица 51.1. Плагин Ear - задачи
Имя задачиЗависит отТипОписание
earcompile (только если плагин Java тоже применен)EarСобирает ear-файл приложения.

Плагин Ear добавляет следующие зависимости к задачам, добавленным базовым плагином.

Таблица 51.2. Плагин Ear - дополнительные зависимости задач
Имя задачиЗависит от
assembleear

51.3. Разметка проекта.

Таблица 51.3. Плагин Ear - разметка проекта
ПапкаЗначение
src/main/applicationРесурсы ear, такие как папка META-INF

51.4. Управление зависимостями.

Плагин Ear добавляет две конфигурации зависимостей: deploy и earlib. Все зависимости из конфигурации deploy помещаются в корень архива ear и они не переходящие. Все зависимости из конфигурации earlib помещаются в папку 'lib' в архиве ear и они переходящие.

51.5. Условные свойства.

Таблица 51.4. Плагин Ear - свойства папок
Имя свойстваТипЗначение по умолчаниюОписание
appDirNameStringsrc/main/applicationИмя папки исходников приложения относительно папки проекта.
libDirNameStringlibИмя папки библиотек внутри сгенерированного ear.
deploymentDescriptororg.gradle.plugins.ear.descriptor.DeploymentDescriptorОписание развертывания, по умолчанию application.xmlМетаданные для генерации файла описания развертывания, например, application.xml. Если этот файл уже существует в appDirName/META-INF, тогда будет использовано содержимое существующего файла, а явная конфигурация в ear.deploymentDescriptor будет проигнорирована.

Эти свойства предоставляются условным объектом EarPluginConvention.

51.6. Ear.

Поведение задачи ear по умолчанию - копирование содержимого src/main/application в корень архива. Если ваша папка application не содержит описание развертывания META-INF/application.xml, тогда он будет сгенерирован.

Дополнительная информация есть в документации API класса Ear.

51.7. Настройка.

Ниже пример с наиболее важными опциями настройки:

Пример 51.2. Настройка плагина Ear

build.gradle

apply plugin: 'ear'
apply plugin: 'java'

repositories { mavenCentral() }

dependencies {
    // The following dependencies will be the ear modules and
    // will be placed in the ear root
    deploy project(path: ':war', configuration: 'archives')

    // The following dependencies will become ear libs and will
    // be placed in a dir configured via the libDirName property
    earlib group: 'log4j', name: 'log4j', version: '1.2.15', ext: 'jar'
}

ear {
    appDirName 'src/main/app'  // use application metadata found in this folder
    // put dependent libraries into APP-INF/lib inside the generated EAR
    libDirName 'APP-INF/lib'
    deploymentDescriptor {  // custom entries for application.xml:
//      fileName = "application.xml"  // same as the default value
//      version = "6"  // same as the default value
        applicationName = "customear"
        initializeInOrder = true
        displayName = "Custom Ear"  // defaults to project.name
        // defaults to project.description if not set
        description = "My customized EAR for the Gradle documentation"
//      libraryDirectory = "APP-INF/lib"  // not needed, above libDirName setting does this
//      module("my.jar", "java")  // won't deploy as my.jar isn't deploy dependency
//      webModule("my.war", "/")  // won't deploy as my.war isn't deploy dependency
        securityRole "admin"
        securityRole "superadmin"
        withXml { provider -> // add a custom node to the XML
            provider.asNode().appendNode("data-source", "my/data/source")
        }
    }
}
	  

Также вы можете использовать опции настройки, которые предоставляет задача Ear, такие как from и metaInf.

51.8. Использование пользовательского файла описания.

Возможно у вас уже есть соответствующие настройки в файле application.xml и вы хотите использоват их вместо настройки секции ear.deploymentDescriptor в сборочном скрипте. Для достижения этой цели, поместите META-INF/application.xml в правильное место внутри ваших исходных папок (смотрите свойство appDirName). Будет использовано содержимое файла, а явная конфигурация в ear.deploymentDescriptor будет проигнорирована.