War 插件 (未完成)

2018-07-01 17:22 更新

WAR插件擴(kuò)展了Java插件,支持web應(yīng)用組裝成War文件.它默認(rèn)禁用了Java插件JAR歸檔任務(wù),并增加了一個(gè)默認(rèn)的WAR歸檔任務(wù)。

25.1.使用

使用war插件需要在構(gòu)建腳本下包括以下內(nèi)容

例25.1.使用war插件

build.gradle

apply plugin 'war'

25.2.任務(wù)

War插件會(huì)添加下列任務(wù)到項(xiàng)目.

表25.1.War插件-任務(wù)

任務(wù)名依賴類型描述
warcompileWar組裝應(yīng)用程序War文件

War插件由Java插件添加下列依賴任務(wù).

表25.2.War插件-附加的依賴任務(wù)

任務(wù)名依賴
assemblewar

圖25.1.War插件-任務(wù) war plugin-tasks

25.3.項(xiàng)目布局

表25.3.War插件-項(xiàng)目布局 文件夾 | 含義 -------- | ------ src/main/webapp | Web應(yīng)用資源

25.4.依賴管理

War插件增加了名為providedCompile和providedRuntime的兩個(gè)依賴配置.這兩個(gè)配置有相同的作用域在編譯或者運(yùn)行時(shí)的配置,不同之處在于是否會(huì)將war文件歸檔.很重要的一點(diǎn)是它們都會(huì)提供配置傳遞.比如在任意的provided配置中添加了commons-httpclient:commons-httpclient:3.0,該依賴依賴于commons-codec,因?yàn)檫@個(gè)一個(gè)"provided"的配置,意味著這兩個(gè)依賴都不會(huì)被加入你的WAR中,即使commons-codec庫(kù)是一個(gè)顯式的編譯配置.如果不希望出現(xiàn)這種傳遞行為,commons-httpclient:commons-httpclient:3.0@jar這樣聲明provided依賴即可.

25.5.公共配置

表25.4.War插件-目錄配置

屬性名稱類型默認(rèn)值描述
webAppDirNameStringsrc/main/webapp在項(xiàng)目目錄的web應(yīng)用的資源文件夾名
webAppDirFile (read-only)projectDir/webAppDirNameWeb應(yīng)用的資源路徑

這些屬性由一個(gè)WarPluginConvention公共對(duì)象提供

25.6.War

War任務(wù)默認(rèn)會(huì)把src/main/webapp的內(nèi)容復(fù)制到歸檔目錄的根目錄.webapp文件夾下會(huì)包含一個(gè)WEB-INF子文件夾,里面可能會(huì)有一個(gè)web.xml文件.編譯后的class文件會(huì)在WEB-INF/classes下,所有runtime[13]的依賴配置會(huì)被拷貝至WEB-INF/lib下.

API文檔中有更多關(guān)于War的信息.

25.7.定制War

下面的例子中有一些重要的自定義選項(xiàng)

例25.2.定制War插件

build.gradle

configuration{
  moreLibs
}

respositories{
  faltDir {dirs "lib"}
  mavenCentral()
}

dependencies{
  compile module(":compile:1.0") {
        dependency ":compile-transitive-1.0@jar"
        dependency ":providedCompile-transitive:1.0@jar"
  }
  providedCompile "javax.servlet:servlet-api:2.5"
    providedCompile module(":providedCompile:1.0") {
        dependency ":providedCompile-transitive:1.0@jar"
  }
  runtime ":runtime:1.0"
  providedRuntime ":providedRuntime:1.0@jar"
  testCompile "junit:junit:4.12"
  moreLibs ":otherLib:1.0"
}

war{
  from 'src/rootContent' // 增加一個(gè)目錄到歸檔根目錄
  webInf {from 'src/additionalWebInf'} // 增加一個(gè)目錄到 WEB-INF 下
  classpath fileTree('additionalLibs') // 增加一個(gè)目錄到 WEB-INF/lib下.
  classpath configurations.moreLibs // 增加更多地設(shè)置到 WEB-INF/lib 下.
  webXml = file('src/someWeb.xml') // 復(fù)制xml文件到 WEB-INF/web.xml.
}

當(dāng)然,可以用一個(gè)封閉的標(biāo)簽定義一個(gè)文件是否存打包到War文件中.

[13]runtime配置將會(huì)繼承compile配置.


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

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)