2011-05-25 163 views
87

我有2個不同的項目建立在mvn上。我正在嘗試替換爲Gradle。Gradle備份到mvn安裝

項目1是SDK和項目2是使用SDK(例如)

在行家它使用MVN安裝這增加了整個項目到本地資源庫創建工件的時間。

我喜歡在這樣的gradle中工作。我喜歡項目1 build.gradle需要將其作爲gradle本地存儲庫發佈,然後示例項目需要使用它。

在maven中,我們進行mvn安裝,它將項目工件添加到.m2文件夾中,但是如何在gradle中執行以便我可以將項目artefact添加到本地存儲庫中。

我可以這樣做的任何方式?

+1

HTTP:/ /stackoverflow.com/questions/2572811/gradle-make-a-3rd-party-jar-available-to-local-gradl電子資源庫 – clacke 2013-05-07 09:26:14

回答

91

SDK /的build.gradle:

apply plugin: "maven" 

group = "foo" 
version = "1.0" 

例如/的build.gradle:

repositories { 
    mavenLocal() 
} 

dependencies { 
    compile "foo:sdk:1.0" 
} 

$ SDK> gradle這個安裝

$例如> gradle這個建立

+1

應用插件:「maven」和$ sdk> gradle install這會將sdk安裝到.m2右邊? 和 mavenLocal()也從.m2和.gradle獲取信息? – Rajmahendra 2011-05-26 10:01:53

+6

'gradle install'發佈到本地Maven倉庫中,'mavenLocal()'確保在那裏查找依賴關係。 – 2011-05-27 05:31:03

6

退房Gradle's documentation on multi-project builds

下面是一個例子,有一些額外的依賴關係。只需在根文件夾中調用gradle install,所有內容都將被構建並放入本地回購。

文件夾結構:

root 
+--> build.gradle 
+--> settings.gradle 
+--> sdk 
| +--> build.gradle 
+--> example 
    +--> build.gradle 

根/的build.gradle:

allprojects { 
    apply plugin: 'java' 
    apply plugin: 'maven' 

    group = 'myGroup' 
    version = '0.1-SNAPSHOT' 
} 

根/ settings.gradle:

include 'sdk' 
include 'example' 

根/ SDK /的build.gradle:

dependencies { 
    // just an example external dep. 
    compile group:'commons-lang', name:'commons-lang', version:'2.3' 
} 

根/例子/的build.gradle:

dependencies { 
    compile project(':sdk') 
    compile group:'log4j', name:'log4j', version:'1.2.16' 
} 
+2

這是理想的做法嗎?如果他想創建一個新項目,example2,它也依賴於sdk呢?現在他必須將2個不相關的項目放在根項目下,只是因爲它們共享一個依賴關係? 你可能會認爲這整個'多項目'設置也是1 Git項目。再說一次,這對公司/多開發者工作流程是否有害? – 2015-12-09 07:04:02