【gradle插件系列】War插件用法详解

【gradle插件系列】War插件用法详解

使用

要使用War插件,请在构建脚本中包含以下内容:

plugins {
    id 'war'
}

War插件扩展了Java插件,以支持组装Web应用程序WAR文件。它禁用了Java插件的默认JAR存档生成,并添加了一个默认的WAR存档任务。

项目布局

除了标准的Java项目布局外,War插件还添加了:

  • src/main/webapp:Web应用程序源代码

任务

War插件添加和修改了以下任务:

  • war:依赖于compile。组装应用程序WAR文件。
  • assemble:生命周期任务,依赖于war。

War插件向Java插件添加了以下任务依赖:

  • warPluginTasks

依赖管理

War插件添加了两个依赖配置:

  • providedCompile:此配置应该用于在编译时需要但由部署WAR的环境提供的依赖项。在主类路径和测试类路径上可见的依赖项应该在此处声明。
  • providedRuntime:此配置应该用于在运行时需要但由部署WAR的环境提供的依赖项。仅在主类路径和测试运行时类路径上可见的依赖项应该在此处声明。

重要的是要注意,这些provided配置具有传递性。假设您将commons-httpclient:commons-httpclient:3.0添加到提供的配置中。此依赖项依赖于commons-codec。因为这是一个"provided"配置,这意味着即使commons-codec库是您实现配置的显式依赖项,也不会将这两个依赖项都添加到WAR中。如果您不希望有这种传递行为,只需像commons-httpclient:commons-httpclient:3.0@jar这样声明提供的依赖项。

发布

  • components.web:用于发布war任务创建的生产WAR的SoftwareComponent。

约定属性(已弃用)

  • webAppDirName:String,默认值为src/main/webapp。Web应用程序源目录的名称,相对于项目目录。
  • webAppDir:(只读) File,默认值为$webAppDirName,例如src/main/webapp。Web应用程序源目录的路径。

这些属性由WarPluginConvention对象提供。

通过约定属性配置war任务已被弃用。如果需要设置war任务的默认值,则直接配置该任务。如果要配置项目中的所有War任务,则使用tasks.withType(War.class).configureEach(…)。

War

War任务的默认行为是将src/main/webapp目录的内容复制到存档的根目录。您的webapp目录当然可以包含一个WEB-INF子目录,其中可能包含一个web.xml文件。编译后的类被编译到WEB-INF/classes目录中。运行时[1]配置的所有依赖项都会被复制到WEB-INF/lib目录中。

API文档中的War类提供了其他有用的信息。

自定义

以下是最重要的自定义选项示例:

configurations {
   moreLibs
}

repositories {
   flatDir { dirs "lib" }
   mavenCentral()
}

dependencies {
    implementation 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"
    }
    runtimeOnly ":runtime:1.0"
    providedRuntime ":providedRuntime:1.0@jar"
    testImplementation "junit:junit:4.13"
    moreLibs ":otherLib:1.0"
}

war {
    webAppDirectory = file('src/main/webapp')
    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
}

当然,可以使用闭包来配置不同的文件集,以定义排除和包含规则。

参考链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BigDataMLApplication

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值