2013-10-22 93 views
2

我想從Maven遷移一個相當大的Android項目到Gradle,但我遇到了一些問題,我不知道如何解決。多項目Android的Gradle構建 - 共享配置

該結構如下(現在不在我的控制之下)。

- MainModule 
-- Core UI 
--- UI Module 1 
---- src 
------ main 
------- java 
-- Core Logic 
--- Logic Module 1 
--- Logic Module 2 
--- ... 
-- Services 
--- Service Module 1 
--- Service Module 2 
--- ... 

主模塊不包含代碼。 「src/main/java」結構被複制到所有其他模塊(邏輯模塊,服務模塊,UI模塊)中。

1-我需要訪問本地Artifactory,爲此我們需要輸入我們的用戶憑證。我有三個不同的存儲庫來查找工件(快照,發佈和另一個我不記得)。我需要爲所有人使用相同的憑據。我如何定義這些憑據並聲明所有build.gradle文件中的存儲庫並共享存儲庫(使用憑據)?我或多或少的瞭解,我可以定義一個存儲庫(和憑據)是這樣的:

repositories { 
    maven { 
     credentials { 
      username "mavenUser" 
      password "mavenPassword" 
     } 

     url "myurl" 
    } 
} 

但是我不知道如何在所有搖籃建立文件共享這個定義,我不認爲複製和粘貼這麼多模塊是最好的主意。另外,從環境變量或Maven的settings.xml中獲取用戶和密碼會很有用。

2-我們需要定期進行發佈,並發表在當地Artifactory的文物,並有版本號自動遞增,就像我們做的Maven,就如何實現這一目標的任何指針? (授予,我還沒有研究過這麼多,我被困在1)

我想在項目的所有build.gradle文件中共享groupId和版本。

4-我希望能夠爲多個(所有)子模塊聲明一次依賴關係。

任何幫助表示讚賞。

回答

2

1a,3,4)您可以定義一個allProjects或一個subProjects閉包,它將適用於其中的任何內容應用於所有相應的項目。例如

allprojects { 
    group = "myGroup" 
    version = "myVersion" 

    repositories { 
    maven { 
     credentials { 
     username "mavenUser" 
     password "mavenPassword" 
     } 

     url "myurl" 
    } 
    } 
} 

subprojects { 
    dependencies { 
    compile "group:artifact:version" 
    } 
} 

事實上,鑑於此的build.gradle在你的根項目,你不需要給你的一個子項目,如果的build.gradle他們沒有別的特別的他們。他們將從注入配置中獲得一個組和版本,並自動從目錄名稱中提取他們的名字。但是,覆蓋這些默認值或添加額外的依賴關係等都可以照常進行。

1B),你可以把你的用戶名和密碼在gradle.properties:

auth.user="user" 
auth.pass="pass" 

然後打電話給他們作爲buildscript標準變量。