2013-11-29 3 views
3

maven 다중 모듈 프로젝트가 있습니다 (구조에 대해서는 첨부 된 이미지를 참조하십시오). 나는 Gradle로 이주하는 과정에있다.Gradle : 조건부 서브 프로젝트 포함

Project Structure

우리는 AppBuild/pom.xml 파일 아래 그림과 같이 내부에 여러 개의 프로필을 가지고; 우리는 프로파일에 대해 -P 옵션을 사용하여 AppBuild에서 빌드를 실행합니다.

Profile Structure

내가 Gradle을 새로운 오전부터

, 나는 그것에 대해 이동하는 가장 좋은 방법이 무엇인지 결정할 수 없습니다입니다. 이제 일부 을 settings.gradle에 넣으려는 시도가 있는데 이는 -P 인수를 기반으로하고 있지만 너무 확신하지는 않습니다. 누군가이 문제를 해결하는 방법을 알려줄 수 있습니까? 몇 가지 예와 함께 가장 좋은 방법은 무엇입니까?

미리 감사드립니다. ~ Niranjan

+0

이 문제를 해결할 수있는 방법은 다음과 같습니다. 일부 대체 설정 파일을 만든 다음 필요에 따라 파일을 이동하는 스크립트를 만듭니다. – spy

답변

1

조건이 포함

은 (는 일류의 기능이 아니다) Gradle을에서 간단하지 않습니다, 당신은 그렇게 몇 하위 프로젝트를 위해 그것을 필요로하는 이유는 불분명하다. 4 개의 서브 프로젝트를 모두없이 settings.gradle에 추가하는 것이 좋습니다.

+0

피터 (Peter). 필자가보기 싫은 예를 들면서, 나의 원래 프로젝트는'AppBuild' 폴더 안에 15 개의 서브 폴더를 가지고 있고 그것들 중에서 4 개의 웹 어플리케이션 WAR, 2 개의 TAR 파일 중 6 개의 다른 아티팩트를 생성한다. 그리고 우리는 항상 모든 빌드를 실행하고 싶지 않습니다. 그러므로, 우리는 모듈을 필요로하는 몇 개의 프로파일을 추가했다. 지침은 Gradle로 이동하는 것이므로 유사한 기능이 필요했습니다. 나는'-P'를 Gradle에 추가하고'include'에 필요한 프로젝트를 기반으로 생각했습니다. 이 문제에 대한 다른 솔루션을 제공하는 데 도움을 주시면 감사하겠습니다. – Niranjan

+0

Gradle은 필요한 것만 재구성 할만큼 똑똑하기 때문에 괜찮을 것입니다. Maven의 조건부 포함을 모방하려고 시도하지 않는 것은 좋습니다. 프로젝트 수에 반드시 필요한 것은 아니며, 구현하기가 어렵습니다. 필요하다면'--parallel'과'--configuration-on-demand' 명령으로 빌드 속도를 높일 수 있습니다 ([Gradle User Guide] (http://gradle.org/docs/current/userguide/userguide_single. html). –

+0

비슷한 유스 케이스가있어 특정 빌드 프로파일 중에 특정 모듈을 비활성화해야합니다. gradle과 또 다른 감독. 그렇다면 module/build.gradle에 대한 else if 비트는 작동하지 않으며 settings.gradle은 if-then-else 구조를 지원하지 않습니다. – spy

1

나는 특별한 프로젝트를 몇 가지 경우에만 포함하고자하는 멀티 프로젝트 빌드를 가지고 있기 때문에 최근에 같은 질문을 보게되었다.
이 특수 하위 프로젝트는 하나의 다른 하위 프로젝트에만 의존하며 구성하는 데 약 1-2 분이 걸립니다. 그래서 나는 그것을 만들고 싶지 않으면 포함시키지 않기를 원합니다. 따라서 빌드 시간이 절약됩니다. 그럼, 내가 한 일은 내가 단순히/이름 변경의 폴더를 삭제할 수 있습니다 MySpecialProject을 구축하지 않을 경우 settings.gradle

if(file('MySpecialProject').exists()){ 
    include ':MySpecialProject' 
} 

을 수정했다. 필자의 경우 폴더는 심볼릭 링크이다. 왜냐하면이 '서브 프로젝트'는 자신의 자식 repo에 있기 때문이다. @spy이 설정에서 if/then/else를 사용할 수 없다고 쓰고 있어도 저에게는 효과적입니다.

관련 문제