2013-10-22 4 views
2

다소 큰 Android 프로젝트를 Maven에서 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에 액세스해야합니다. 사용자 자격 증명을 입력해야합니다. 나는 인공물 (스냅 샷, 릴리즈, 그리고 내가 기억하지 못하는 또 다른 것)을 찾기 위해 3 개의 다른 리포지토리를 가지고 있습니다. 나는 그들 모두를 위해 동일한 신임장을 사용해야한다. 이러한 자격 증명을 정의하고 저장소를 선언하고 모든 build.gradle 파일에서 저장소 (자격 증명 포함)를 공유하려면 어떻게합니까?

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

     url "myurl" 
    } 
} 

그러나 나는 모든 파일을 구축 Gradle을 통해이 정의를 공유하는 방법을 몰라, 나는 복사 생각하지 않는다 : 나는 더 많은 이하 나는이 같은 저장소 (및 자격 증명)를 정의 할 수 있음을 이해 수많은 모듈에 붙여 넣는 것이 가장 좋습니다. 또한 Maven의 settings.xml과 같은 환경 변수 또는 사용자 아이디를 얻는 것이 유용 할 것입니다.

주기적으로 릴리스를 만들고 로컬 Artifactory에 아티팩트를 게시하고 버전 번호를 자동으로 증가시켜야합니다. 예를 들어 Maven에서와 같이이 작업을 수행하는 방법에 대한 지침이 있습니까? (당연히, 나는 이것을 많이 연구하지 않았고, 나는 1을 고수했다.)

3- 프로젝트의 모든 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 표준 변수로 부른다.

관련 문제