2014-10-12 63 views
0

我希望能夠使用Gradle(或類似的東西)下載,添加&管理來自Maven的第三方庫中央等,但無需使用Gradle構建(編譯)我的項目。 (這是一個Eclipse GWT應用程序,我相信我需要保留現有的Eclipse GWT插件構建過程以保持代碼熱切換功能)。如何從Maven Central等添加庫到Eclipse中現有的非Gradle,非Maven項目

我想讓jar進入我的「WebContent/WEB-INF/lib」目錄並添加到我的構建路徑中,這樣即使它不是「Gradle項目」,我也可以立即開始使用這些庫。

這可能嗎?如果是這樣如何?我已經嘗試添加build.gradle到我的項目根目錄,添加了依賴關係,然後從命令行調用「gradle build」,它顯示「BUILD SUCCESSFUL」(但很明顯,.jar不會添加到我的項目的類路徑中等等),但是到目前爲止,我還沒有確定我是在正確的軌道上。當我嘗試右鍵單擊項目並調用Gradle> Tasks Quick Launcher時,它會顯示「Selected項目不是Gradle項目「)。

回答

0

你想達到什麼是可能的,但肯定不應該如何使用gradle。你應該使用gradle war插件(或者可能存在GWT項目的任何插件 - 機會非常高),但是因爲我不知道如何(和如果)它與GWT無縫集成,所以我不會推薦它。 幸運的是,gradle是非常靈活的系統,可以在不應用任何插件的情況下完成。

下面的腳本只是一個概念驗證,但可以很容易地擴展:

repositories { 
    mavenCentral() 
} 

configurations { 
    eclipse 
    eclipseRt 
} 

dependencies { 
    eclipse 'com.google.guava:guava:18.0'  
    eclipseRt 'javax.servlet:servlet-api:2.5' 
} 

task copyToWebInfLib(type: Copy) { 
    from configurations.eclipse 
    into 'WEB-INF/lib' 
} 

task modifyEclispeClasspath << { 
    //here add dependencies from *both* configurations 
    //to eclipse classpath 
} 

說明:

首先您需要添加相應的其中所希望的依賴性保持的。您可以添加多個存儲庫。

然後您需要定義兩個配置(配置基本上是一個依賴集的名稱)。爲什麼兩個?因爲您需要提供開發和複製到WEB-INF/lib(如番石榴)和僅用於開發(例如servlet api - 由servlet容器提供)所需的依賴關係。 War上面提到的插件爲你處理這個(providedCompileprovidedRuntime配置),但在這裏你需要自己創建配置。您可以稍後更改名稱。

現在來到依賴關係塊。在這裏您聲明瞭您在項目中使用的依賴關係,但請記住用適當的配置名稱標記它們。

最後你需要(Copy型的)任務,以解決依賴關係 - 只有那些標有日食(配置名稱)將被複制到文件夾WEB-INF/lib。第二項任務是修改適當的eclipse配置文件。由於我不每天使用eclipse,所以我不知道如何修改這些文件。但您只需要知道格式,並可能使用XmlSlurper(例如, (AFAIK eclipse文件保存爲XML格式)。

一般來說就是這樣。隨意提出其他問題。使用gradle wrapper也是個好主意,但這是一個額外的步驟。

+0

這是你在找什麼? – Opal 2014-10-13 06:25:09

+0

是的,有點。我想我需要檢查我的類路徑,如果該條目已經存在,並刪除舊版本等。所以我假設沒有什麼自動在Gradle中爲此? – Navigateur 2014-10-13 10:03:36

+0

有一個eclipse插件,但我不確定它是否適用於GWT項目,我想不是。我準備的實際上是半自動解決方案。你可以從classpath中刪除所有的依賴關係,並用gradle來準備它們。 – Opal 2014-10-13 10:06:14

相關問題