×
Gradle 简介Gradle 概述Gradle 安装Gradle 问题反馈Gradle 构建基础Gradle Java 构建入门Gradle 依赖管理基础Gradle Groovy 快速入门Gradle Web 工程构建Gradle 命令行的基本使用Gradle 图形用户界面Gradle 编写构建脚本Gradle 教程 - 杂七杂八Gradle 任务详述Gradle 使用文件Gradle 从 Gradle 中调用 AntGradle 日志Gradle 守护进程Gradle 构建环境Gradle 插件Gradle 标准的 Gradle 插件Gradle Java 插件Gradle Groovy 插件Gradle Scala 插件Gradle War 插件Gradle Ear 插件Gradle Jetty 插件Gradle Checkstyle 插件Gradle CodeNarc 插件Gradle FindBugs 插件Gradle JDepend 插件Gradle PMD 插件Gradle JaCoCo 插件Gradle Sonar 插件Gradle Sonar Runner 插件Gradle OSGi 插件

Gradle War 插件


War 的插件继承自 Java 插件并添加了对组装 web 应用程序的 WAR 文件的支持。它禁用了 Java 插件生成默认的 JAR archive,并添加了一个默认的 WAR archive 任务。

用法

要使用 War 的插件,请在构建脚本中包含以下语句:

使用 War 插件

build.gradle

apply plugin: 'war'  

任务

War 插件向 project 中添加了以下任务。

表 26.1. War 插件 - 任务

任务名称 依赖于 类型 描述
war compile War 组装应用程序 WAR 文件。

War 插件向 Java 插件所加入的 tasks 添加了以下的依赖。

表 26.2. War 插件 - 额外的 task 依赖

任务名称 依赖于
assemble war

图 26.1. War 插件 - tasks

项目布局

表 26.3. War 插件 - 项目布局

目录 意义
from 'src/main/webapp' Web 应用程序源代码

依赖管理

War 插件添加了两个依赖配置: providedCompile 和 providedRuntime。虽然它们有各自的compile 和 runtime 配置,但这些配置有相同的作用域,只是它们不会添加到 WAR 文件中。要特别注意,这些 provided 配置的传递使用。假设你添加 commons-httpclient:commons-httpclient:3.0 依赖到任何一个 provided 配置。这个依赖又依赖于 commons-codec。这意味着 httpclient 和 commons-codec 都不会添加到你的 WAR 中,即使 commons-codec 是 compile 配置上的一个显示依赖。如果你不想要这种传递行为,只是把 provided 依赖声明成和commons-httpclient:commons-httpclient:3.0@jar 一样。

公约属性

表26.4. War 插件 ​​- 目录属性

属性名称 类型 默认值 描述
webAppDirName String from 'src/main/webapp' web 应用程序源目录的名称,是一个相对于项目目录的目录名称。
webAppDir File (read-only) webAppDirName Web 应用程序的源目录。

这些属性由一个 WarPluginConvention 公约对象提供。

War

War task 的默认行为是将 src/main/webapp 的内容复制到 archive 的根目录下。你的 webapp 目录自然可能包含一个 WEB-INF 子目录,这个子目录可能还再包含一个 web.xml 文件。已编译的类被编译进 WEB-INF/classes。所有 runtime 配置的依赖被复制到 WEB-INF/lib。

自定义

下面是一个示例,展示了最重要的自定义选项:

war 插件的自定义

build.gradle

configurations {
   moreLibs
}
repositories {
   flatDir { 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.11'
}
    moreLibs ":otherLib:1.0"
}
war {
    from 'src/rootContent' // adds a file-set to the root of the archive
    webInf { from 'src/additionalWebInf' } // adds a file-set to the WEB-INF dir.
    classpath fileTree('additionalLibs') // adds a file-set to the WEB-INF/lib dir.
    classpath configurations.moreLibs // adds a configuration to the WEB-INF/lib dir.
    webXml = file('src/someWeb.xml') // copies a file to WEB-INF/web.xml
}  

当然,你可以用一个定义了 excludes 和 includes 的闭包来配置不同的文件集。


分类导航

关注微信下载离线手册

bootwiki移动版 bootwiki
(群号:472910771)