3

我的构建文件中有一些 gradle 战争任务,我想更改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像这样在每个war文件的基础上配置吗?

4

2 回答 2

6

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

apply plugin: "war"

webAppDirName = "non/existing/dir"

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

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

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

于 2013-03-14T18:00:17.367 回答
1
task myWarTask(type: War) {
    from 'src/anotherfolder/webapp'
    version ""
    destinationDir = file("$buildDir/libs")
    baseName = 'myWarName'
    classpath = configurations.myWarConfiguration
}
于 2013-03-13T19:05:42.407 回答