Gradle:在战争项目之间共享zip



我正试图为我的java web项目构建一种模板构建脚本。这个模板是存储在我的apache web服务器。为了在项目中使用它,我使用apply from 'http://myserver/templateWarScript.gradle'。最后的war的配置是在这个模板中完成的。

对于我所有的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
    }

如果我把"configuration . zipwebresource .zip"在war配置中,我得到了一个错误,显示gradle找不到zip依赖项。
但是,如果我从war配置中删除它,我可以通过我的测试任务读取它。

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

我想了解为什么我可以阅读configuration . zipwebresource。任务中的路径,而不是配置中的路径。我的目标是像使用依赖一样使用zip并将其内容放在生成的war

的根目录中。

多谢。

apply from:一起包含此代码段和将其直接粘贴到构建脚本(替换apply from:)之间没有语义上的区别。在某些情况下,可能您更改了声明的顺序,或者在本地存储库中没有zip。

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

PS:如果没有明确的问题,堆栈溢出不是这种支持的好格式。获得Gradle支持的最佳位置是:http://forums.gradle.org

最新更新