gradle自定义战争任务webAppDirName

Jef*_*rey 3 war gradle

我的构建文件中有一些gradle war任务,我想更改webAppDirName每次战争任务.我试过这个:

task myWarTask(type: War) {
    ext.webAppDirName = 'src/anotherfolder/webapp' // also tried just webAppDirName
    version ""
    destinationDir = file("$buildDir/libs")
    baseName = 'myWarName'
    classpath = configurations.myWarConfiguration
}
Run Code Online (Sandbox Code Playgroud)

但这仍然是牵引src/main/webapp而不是内容src/anotherfolder/webapp

我可以webAppDirName像这样在每个战争文件的基础上配置吗?

Pet*_*ser 6

webAppDirName每个项目只有一个属性,War插件会自动添加与from每个War任务相对应的属性.所以主要的问题是如何撤消它from.我认为以下应该有效:

apply plugin: "war"

webAppDirName = "non/existing/dir"

task myWarTask(type: War) {
    from "src/anotherfolder/webapp"
    ...
}
Run Code Online (Sandbox Code Playgroud)

另一种方法是仅使用War任务类型,但不使用War插件.您将不得不再配置一些任务属性,并将失去一些功能,主要与提供的配置和战争的发布有关.当然,您可以通过显式配置(如有必要)来弥补这一点.如果您对详细信息感兴趣,请查看War插件的源代码.

PS:webAppDirName不是额外的属性(ext.),而是War插件添加的约定属性.额外属性仅用于构建脚本中的临时使用.您ext.在编写额外属性时使用,但在阅读属性时省略它.