gradle:在战争项目之间共享一个拉链

时间:2013-06-04 07:25:26

标签: zip gradle war

我正在尝试为我的java Web项目构建一种模板构建脚本。 此模板存储在我的apache Web服务器中。 要在项目中使用它,我使用apply from 'http://myserver/templateWarScript.gradle'。 最终战争的配置在此模板中完成。

对于我的所有java web项目,我需要将zip文件的内容(包含JavaScript文件,图像等)放入最终的war文件中。 要共享此zip文件,我将其放在我的本地存储库中。

现在,我正试图找到一种方法将其内容纳入我的最后一战。但我找不到办法做到这一点。 我正在尝试将以下行放在我的模板脚本中:

  configurations {
        zipWebResource
  }

   dependencies {
        zipWebResource group: 'utilities.template', name: 'webResource', version: '1.0', ext: 'zip'
   }

  //test task 
  task testZipPath << {
        println "zip path:" + configurations.zipWebResource.asPath
   }
   //

   //my war configuration
   war {
        println "zip path:" + configurations.zipWebResource.asPath
    }

如果我在war配置中放入'configurations.zipWebResource.asPath',我会收到一条错误,表明gradle无法找到zip依赖项。
但是,如果我从战争配置中删除它,我可以通过我的测试任务阅读它。

我也尝试在方法中或直接在gradle脚本中读取它,但我遇到了同样的错误。阅读gradle用户指南后,我认为我的问题与配置或/和执行阶段有关。

我想了解为什么我可以在任务中读取 configurations.zipWebResource.asPath 但不能在配置中读取。我的目标是将zip作为依赖项使用,并将其内容放在生成的战争的根目录中

非常感谢。

1 个答案:

答案 0 :(得分:0)

将此代码段与apply from:包含在一起,并将其直接粘贴到构建脚本(替换apply from:)之间没有语义差异。也许您更改了声明的顺序,或者在其中一个案例中没有在本地存储库中使用zip。

编辑以反映您的新问题: 通常,配置不应在配置时解析,而是仅在执行时解析。在您的情况下,asPath将触发解决方案。对于外部依赖,它应该工作(但不建议,因为它可能会减慢您的构建)。有可能问题出在其他地方(例如,错误的声明顺序)。

PS:Stack Overflow并不是这种支持的好格式,没有明确的问题。获得Gradle支持的最佳位置是:http://forums.gradle.org