文档章节

[译]Gradle中的War插件

英强
 英强
发布于 2017/02/06 10:41
字数 642
阅读 118
收藏 0

讲过用Gradle 构建Java 项目用Gradle 构建Java Web 项目之后,这次我们详细讲下Gradle的War插件。原文地址:Chapter 49. The War Plugin

War 插件继承于Java插件,添加了打包web 应用WAR包的支持。此插件禁用了Java 插件的JAR 包打包功能,添加了WAR 包打包功能。

49.1. 用法

为了使用War 插件,需要在你的Gradle 构建脚本中添加下面这段:

build.gradle

apply plugin: 'war'

49.2. 任务

War 插件为项目添加了以下这些任务: Task name|Depends on|Type|Description ---|---|---|--- war|compile|War|Assembles the application WAR file.

War 插件 添加了下面这些来自Java 插件的依赖到任务中: Task name|Depends on ---|--- assemble|war

additional task dependencies

49.3.项目结构

Directory Meaning
src/main/webapp Web application sources

49.4.依赖管理

War 插件带来了两个配置属性:providedCompile 和 provideRuntime。这两个配置的作用域分别跟compile 和 runtime 配置一致,除非他们不是添加到WAR 包。有个重要的点,这些provided 配置的行为传递性。假设你添加依赖commons-httpclient:commons-httpclient:3.0 到其中一个provided 配置。这个依赖有个依赖是commons-codec。因为这是“provided”配置,这意味着着两个依赖都不会打包进你的WAR包,即使commons-codec 包显性的配置为 compile。如果你不想要这个传递行为,一个简单的做法,就是这么来定义你的provided 依赖:commons-httpclient:commons-httpclient:3.0@jar。

49.5.默认配置

Property name Type Default value Description
webAppDirName String src/main/webapp The name of the web application source directory, relative to the project directory.
webAppDir File (read-only) projectDir/webAppDirName The web application source directory.

These properties are provided by a WarPluginConvention convention object.

49.6.War

War 任务的默认行为是拷贝src/main/webapp 目录下的内容到包的根目录。你的webapp 目录下可能有个包含web.xml 的子目录 WEB-INF。编译后的clesses文件会被编译到WEB-INF/classes。所有的runtime 配置的依赖包会被拷贝到WEB-INF/lib。

The War class in the API documentation has additional useful information.

49.7.自定义

下面是一个包含最重要自定义项的栗子:

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.12"
    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
}

Of course one can configure the different file-sets with a closure to define excludes and includes.

© 著作权归作者所有

英强

英强

粉丝 174
博文 29
码字总数 18802
作品 2
深圳
后端工程师
私信 提问
Gradle入门(6):创建Web应用项目

本文由 伯乐在线 - JustinWu翻译,黄利民 校稿。未经许可,禁止转载!英文出处:Petri Kainulainen。欢迎加入翻译组。 如果你并不熟悉Gradle,在继续阅读本文之前,你应当先阅读以下文章。 ...

低至一折起
08/20
57
0
构建Gradle范例项目之构建web项目

Gradle提供了开箱即用的插件,用来组装WAR文件和将web应用部署到本地Servlet容器中。Gradle对构建和运行web应用都提供了扩展性支持。这里我们学习使用两个web应用程序部署插件:War和Jetty。...

柳哥
2015/10/26
618
0
Gradle学习之构建java与web项目

一.使用Gradle的java插件构建Java项目 1)Gradle插件包含了若干个接口定义和已有的任务项,语法结构:apply plugin:'插件名' ,此处我们定义插件 apply plugin : 'java' 2)Gradle希望我们的j...

java~nick
2018/01/12
0
0
运行 Spring Boot 应用的 3 种方式!

运行 Spring Boot 应用的 3 种方式 1、在 IDE 中运行 在 Eclipse、IDEA 中直接运行,又有以下两种方式。 jar 包方式 Spring Boot 默认采用 jar 包内嵌 Tomcat、Jetty 等 Server 的方式,并需...

技术小能手
01/03
0
0
Jib 1.0.0 GA 发布:构建 Java Docker 镜像从未如此简单

为了更方便将 Java 应用程序容器化,Google 于去年推出了 Jib 工具。Jib 是一个快速而简单的容器镜像构建工具,它负责处理将应用程序打包到容器镜像中所需的所有步骤。 Docker 构建流程 Jib ...

局长
02/13
10.1K
31

没有更多内容

加载失败,请刷新页面

加载更多

vue中eventBus的使用

使用场景: 1、兄弟组件的通信,父子组件的通信 2、不同路由的通信 针对兄弟组件的通信,父子组件的通信 新建bus.js文件 import Vue from 'vue' var bus = new Vue() export default bus 在需...

tianyawhl
24分钟前
5
0
C# DBHelper

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using System.Data.SqlClient;using System.Windows.Forms;namesp......

vga
27分钟前
5
0
Spring Boot中@ConditionalOnProperty使用详解

在Spring Boot的自动配置中经常看到@ConditionalOnProperty注解的使用,本篇文章带大家来了解一下该注解的功能。 Spring Boot中的使用 在Spring Boot的源码中,比如涉及到Http编码的自动配置...

程序新视界
28分钟前
11
0
centos7下安装mysql(完整配置)

https://blog.csdn.net/baidu_32872293/article/details/80557668

为何不可1995
30分钟前
7
0
如何从零到一设计一个MQ消息队列

消息队列整体设计思路 主要是设计一个整体的消息被消费的数据流。 这里会涉及到:消息生产Producer、Broker(消息服务端)、消息消费者Consumer。 1.Producer(消息生产者):发送消息到Broker。...

一只会编程的狼
36分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部