2013-06-04 38 views
0

我正在嘗試爲我的java web項目構建一種模板構建腳本。 該模板存儲在我的apache web服務器中。 要在項目中使用它,我使用apply from 'http://myserver/templateWarScript.gradle'。 最終戰爭的配置是在這個模板中完成的。gradle:在戰爭項目之間共享zip

對於我所有的java web項目,我需要將zip文件(包含JavaScript文件,圖像等)的內容放入最終的war文件中。 要分享這個壓縮文件,我把它放在我的本地存儲庫。

現在,我試圖找到一種方法將其內容包含在我的最終戰爭中。但我找不到辦法。 我試圖把下面一行在我的模板腳本:

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 
    } 

如果我把在戰爭中配置「configurations.zipWebResource.asPath」,我有這顯示了一個錯誤gradle這個可以」找到zip依賴項。
但是,如果我從戰爭配置中刪除它,我可以通過我的測試任務來閱讀它。

我也嘗試閱讀它的方法或直接在gradle腳本,但我有同樣的錯誤。閱讀Gradle用戶指南後,我認爲我的問題與配置或/和執行階段有關。

我想了解爲什麼我可以在配置中讀取配置.zipWebResource.asPath。我的目標是使用壓縮像一個依賴項,並把它的內容在生成的戰爭的根源

非常感謝。

回答

0

將此代碼片段與apply from:包含在一起並將其直接粘貼到構建腳本(替換apply from:)之間沒有語義差異。也許你改變了聲明的順序,或者在其中一種情況下沒有在本地存儲庫中使用zip。

編輯以反映您的新問題: 一般而言,不應在配置時解析配置,而只能在執行時解析配置。在你的情況下,asPath將觸發該決議。對於外部依賴,它應該可以工作(但不建議使用,因爲它可能會降低構建速度)。機會是問題在其他地方(例如錯誤的聲明順序)。

PS:對於沒有明確問題的此類支持,堆棧溢出不是一種很好的格式。獲得Gradle支持的最佳地點是:http://forums.gradle.org

+0

該zip已經在我的gradle緩存中。我的問題解決了一半。我在模板中添加了另一個** repositories closure **(用於zip依賴項)。但是現在,我無法理解爲什麼'configurations.zipWebResource.asPath'在我的戰爭任務配置中無法訪問。例如,我不能做'war {println configurations.zipWebResource.asPath}'。 要訪問它,我必須使用個人任務(如前一個__testZipPath__任務)。在war配置中無法訪問zipWebResource.asPath? – naike

+0

請編輯您的問題。否則,很難跟蹤你在做什麼/詢問。 –

+0

我編輯它:)。我認爲現在會更容易理解。 – naike