2012. 4. 16. 08:54 IT

- WHY?


gradle의 멀티 플로젝트 설정 가이드를 따라가면 늘 최상위 경로에 settings.gradle 을 구성하게된다.

당연히 전체 프로젝트에 대해 계층적인 구조를 가져가는 것이 상식이다.

하지만 eclipse 관점에서만 볼때, 모든 프로젝트는 항상 같은 레벨에서 관리가 된다. 

때문에 상위 경로에서 멀티 프로젝트를 관리하는 개념을 도입할때 어떻게 해야 할지 고민하게 된다.

eclipse project 단위로 형상을 관리할 경우, 상위 경로에 있는 멀티프로젝트 설정파일은 버전관리 대상에서 제외 되어 버리기 때문이다. 


물론... gradle user guide에서 설명을 안했을 뿐이지, 멀티프로젝트 관리를 반드시 계층적으로 해야 하는 것은 아니다. 


다음과 같이 설정할 수 있다.


- project-emma : multi-project관리용 root project

   settings.gradle

   build.gradle

- project-navi : child project 1. Type : java library

   build.gradle

- project-bovary : child project 2. Type: web application. it depends on project-navi

   build.gradle


[$project-emma/settings.gradle]

// define projects

include 'navi', 'bovary'


// define sub-projects location

project(':navi').projectDir = new File(rootDir, '../project-navi')

project(':bovary').projectDir = new File(rootDir, '../project-bovary')

[$project-emma/build.gradle]
// define subproject configuration
subprojects{
// define plugins
apply plugin: 'java'
repositories {
mavenCentral()
}
// set compile encoding
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
}
[$project-navi/build.gradle]
jar {
destinationDir = file("dist"); // 별도 위치에 저장하고 싶을 경우에만 명시.
}
[$project-bovari/build.gradle]
apply plugin: 'war' // compile -> war -> assemble
dependencies {
compile project(':navi') // navi project에 대한 의존성을 명시.
 }

당연하지만, 멀티프로젝트 관리용으로 빈 프로젝트를 만들어야 할 필요는 없다. (navi의 하위 경로에 지정해도 가능하다는 말임) 앞으로도 유용하게 사용할 수 있을 듯 싶음. 


posted by smplnote