Gradle은 하나의 모듈 만 빌드


152

여러 모듈 gradle 빌드가 있습니다. 루트를 사용하여 하나의 모듈에 대한 대상을 실행하고 싶습니다. 예 :

gradle build -Pmodule=ABC
gradle jar -Pmodule=ABC
gradle test -Pmodule=ABC
gradle compileJava -Pmodule=ABC
gradle customTask -Pmodule=ABC
etc.

따라서 모든 대상은 모듈을 지정하여 루트에서 실행할 수 있습니다. 이를 수행하는 간단한 방법이 있습니까?

감사 !


if (project.hasProperty('module') && module.equals('ABC')) { // execute module ABC } .... 이것이 당신이 달성하고자하는 것입니까?
pepuch

@pepuch, 명확하게 설명해 주시겠습니까? 나는 aar가있는 내 앱에 업데이트를 푸시하고 싶지만 라이브러리를 다시 작성하지 않고 앱의 변경 사항 만 작성합니다.
The_Martian

답변:


302

특정 하위 프로젝트의 작업을 실행하려면 해당 작업 경로를 지정하십시오 . 예를 들면 다음과 같습니다.

gradle :ABC:build

리딩 :은 루트 프로젝트를 나타냅니다. ABC하위 프로젝트이며 해당 프로젝트 build의 작업입니다.


4
하나의 하위 프로젝트 만 여러 개로 조립하기 위해 명령 줄이 아닌 구성을 통해 어떻게 제어 할 수 있습니까? Google의 Release Pipelines의 경우 루트 프로젝트에서 "gradle clean assemble"을 시작합니다. 저에게는 AppEngine 및 Android 빌드를 빌드하려고합니다. 릴리스 파이프 라인은 SDK가 설치되어 있지 않아 일시적인 머신에서 이해할 수있는 Android 빌드에서 실패합니다. 또한 Release Pipelines가 구성 옵션을 제공하는 것처럼 보이지 않습니다.
brunobowden

내 경우에는 루트 프로젝트가 여전히 검사되어 현재 처리하고 싶지 않은 오류 메시지가 발생합니다. 매우 성가신.
Wolfgang Fahl 2012 년

gradle :ABC:clean :ABC:build
StanislavKo

gradle build -p moduleA가 더 좋으며 모듈의 종속성을 처리합니다.
John

84

빠른 길을 찾았다

gradle build -p moduleA

moduleA는 모듈의 디렉토리입니다.

위의 명령은 a moduleA와 모든 하위 모듈을 빌드 moduleA하며 경로 여야합니다.


4
위의 명령은 moudleA와 모든 하위 모듈을 빌드하고 moduleA는 경로 여야합니다. gradle build -p path\pathSt\moduleA
Viraj

1
자체 gradle 파일이없는 하위 프로젝트에 대한 래퍼가 있습니다. 선택한 답변과 달리 이것은 효과적입니다. 또한 의견을 명확히 해 주셔서 감사합니다. 답변에 추가 할 수 있습니까?
Vlasec

24

Mac OS에서 나와 함께 작동하는 유일한 변형은 다음과 같습니다.

./gradlew  ABC:build

ABC 모듈의 이름입니다

(리눅스에서도 작동 할 수 있습니다)


5

여기에 이미지 설명을 입력하십시오

IDE가 Android Studio 인 경우 간단한 방법이 있습니다. 컴파일하려는 모듈 폴더를 선택한 다음 빌드를 클릭하고 모듈을 '모듈 폴더'로 선택하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.