Gradle Ear 插件

2022-08-03 15:32 更新

Ear 插件添加了用于組裝 web 應(yīng)用程序的 EAR 文件的支持。它添加了一個(gè)默認(rèn)的 EAR archive task。它不需要 Java 插件,但是對(duì)于使用了 Java 插件的項(xiàng)目,它將禁用默認(rèn)的 JAR archive 的生成。

用法

要使用 Ear 的插件,請(qǐng)?jiān)跇?gòu)建腳本中包含以下語句:

使用 Ear 插件

build.gradle

apply plugin: 'ear'  

Tasks

Ear 插件向 project 中添加了以下任務(wù)。

表 27.1. Ear 插件 - tasks

任務(wù)名稱 依賴于 類型 描述
ear compile(僅在也配置了使用 Java 插件的時(shí)候) ear 組裝應(yīng)用程序 EAR 文件。

Ear 插件向基礎(chǔ)插件所加入的 tasks 添加了以下的依賴。

表 27.2. Ear 插件 - 額外的 task 依賴

任務(wù)名稱 依賴于
assemble ear

項(xiàng)目布局

表 27.3. Ear 插件 - 項(xiàng)目布局

目錄 意義
src/main/application Ear 資源,如 META-INF 目錄

依賴管理

Ear 插件添加了兩個(gè)依賴配置:deploy和earlib。所有在 deploy 配置中的依賴項(xiàng)都放在 EAR 文件的根目錄中,并且是不可傳遞的。所有在 earlib 配置的依賴都放在 EAR 文件的“l(fā)ib”目錄中,并且是可傳遞的。

公約屬性

表27.4. Ear 插件 ??- 目錄屬性

屬性名稱 類型 默認(rèn)值 描述
appDirName String src/main/application 相對(duì)于項(xiàng)目目錄的應(yīng)用程序源目錄名稱。
libDirName String into(<s2>'libs'</s2>) { 生成的 EAR 文件里的 lib 目錄名稱。
deploymentDescriptor org.gradle.plugins.ear.descriptor.DeploymentDescriptor 部署描述符,它有一個(gè)合理的名為application.xml的默認(rèn)值 用于生成部署描述符文件的元數(shù)據(jù),例如ear.deploymentDescriptor中的顯式配置將被忽略。

這些屬性由一個(gè) EarPluginConvention 公約對(duì)象提供。

Ear

Ear task 的默認(rèn)行為是將 src/main/application 的內(nèi)容復(fù)制到 archive 的根目錄下。如果你的 application 目錄沒有包含 META-INF/application.xml 部署描述符,那么將會(huì)為你生成一個(gè)。

另請(qǐng)參閱 Ear。

自定義

下面是一個(gè)示例,展示了最重要的自定義選項(xiàng):

ear 插件的自定義

build.gradle

apply plugin: 'ear'
apply plugin: 'java'
repositories { mavenCentral() }
dependencies {
    //following dependencies will become the ear modules and placed in the ear root
    deploy project(':war')
    //following dependencies will become ear libs and placed in a dir configured via 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
    libDirName 'APP-INF/lib'  // put dependency libraries into APP-INF/lib inside the generated EAR;
                                // also modify the generated deployment descriptor accordingly
    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
        description = "My customized EAR for the Gradle documentation"  // defaults to project.description
//      libraryDirectory = "APP-INF/lib"  // not needed, because setting libDirName above did this for us
//      module("my.jar", "java")  // wouldn't deploy since my.jar isn't a deploy dependency
//      webModule("my.war", "/")  // wouldn't deploy since my.war isn't a deploy dependency
        securityRole "admin"
        securityRole "superadmin"
        withXml { provider -> // add a custom node to the XML
            provider.asNode().appendNode("data-source", "my/data/source")
        }
    }
}  

你還可以使用 Ear 任務(wù)提供的自定義選項(xiàng),如 from 和 metaInf。

使用自定義的描述符文件

假設(shè)你已經(jīng)有了 application.xml ,并且想要使用它而不是去配置 ear.deploymentDescriptor 代碼段。去把 META-INF/application.xml 放在你的源文件夾里的正確的位置(請(qǐng)查看 appDirName 屬性)。這個(gè)已存在的文件的內(nèi)容將會(huì)被使用,而 ear.deploymentDescriptor 里的顯示配置則會(huì)被忽略。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)