gradle自定义战争任务webAppDirName

时间:2013-03-13 17:57:16

标签: 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
}

但这仍然是src/main/webapp而不是src/anotherfolder/webapp

的内容

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

2 个答案:

答案 0 :(得分:6)

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

apply plugin: "war"

webAppDirName = "non/existing/dir"

task myWarTask(type: War) {
    from "src/anotherfolder/webapp"
    ...
}

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

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

答案 1 :(得分:1)

task myWarTask(type: War) {
    from 'src/anotherfolder/webapp'
    version ""
    destinationDir = file("$buildDir/libs")
    baseName = 'myWarName'
    classpath = configurations.myWarConfiguration
}