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
<s1>"src/main/webapp"</s1>
|
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
<s1>"src/main/webapp"</s1>
|
web 应用程序源目录的名称,是一个相对于项目目录的目录名称。 |
webAppDir
|
File (read-only) |
webAppDirName
|
Web 应用程序的源目录。 |
这些属性由一个 WarPluginConvention 公约对象提供。
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 的闭包来配置不同的文件集。
JaCoCo 插件目前还是孵化中状态。请务必注意,在以后的 Gradle 版本中,DSL 和其他配置可能会有所改变。JaCoCo 插件通过集成 JaC...
你可以用 Ant 来执行 Java 代码。在下面的例子中,给出的 java 类文件需要一个参数(管理员的邮箱地址),执行后将发送一封邮件...
Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开...
常用设置如上图标注 1 所示,该区域的后缀类型文件在 IntelliJ IDEA 中将以标注 2 的方式进行打开。如上图标注 3 所示,我们可以...
打开新建 Java 接口向导新建 Java 接口向导可以创建新的 Java 接口。打开向导的方式有:点击 File 菜单并选择 NewInterface在 Pa...
Redis Setex 命令Redis 字符串(string) Redis Setex 命令为指定的 key 设置值及其过期时间。如果 key 已经存在, SETEX 命令将会...
Redis Decrby 命令Redis 字符串(string) Redis Decrby 命令将 key 所储存的值减去指定的减量值。如果 key 不存在,那么 key 的值...
Redis Hincrby 命令Redis 哈希(Hash) Redis Hincrby 命令用于为哈希表中的字段值加上指定增量值。增量也可以为负数,相当于对指...