문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 마지막 판 양쪽 다음 판 | ||
gradle:from_maven [2012/10/11 15:07] kwon37xi [Gradle이 Maven보다 좋았던 점] |
gradle:from_maven [2013/05/10 14:49] kwon37xi [Profile 흉내내기] |
||
---|---|---|---|
줄 6: | 줄 6: | ||
* Gradle은 DSL로 설정 정보를 구성하고, | * Gradle은 DSL로 설정 정보를 구성하고, | ||
* Maven은 상속 구조를 사용해 멀티 모듈을 구현한다. Gradle은 구성 주입(Configuration Injection)을 사용한다. | * Maven은 상속 구조를 사용해 멀티 모듈을 구현한다. Gradle은 구성 주입(Configuration Injection)을 사용한다. | ||
- | * Maven에서 특정 설정을 몇몇 모듈에서만 공통으로 사용하려면 불필요하게 부모 프로젝트를 생성하여 설정하고 그것을 자식들이 상속하게 해야 한다. | + | * Maven에서 특정 설정을 몇몇 모듈에서만 공통으로 사용하려면 불필요하게 부모 프로젝트를 생성하여 설정하고 그것을 자식들이 상속하게 해야 한다. 게다가 다른 모든게 같더라도 약간이라도 설정이 다른 프로젝트가 하나라도 있다면 그 프로젝트는 상속을 할 수 없고, 거의 모든 설정을 중복해서 해당 프로젝트에 넣어줘야 한다. |
* Gradle은 공통 설정을 조건에 따라 특정 프로젝트에만 주입 가능하다. 불필요한 프로젝트는 필요없다. | * Gradle은 공통 설정을 조건에 따라 특정 프로젝트에만 주입 가능하다. 불필요한 프로젝트는 필요없다. | ||
* 프로젝트에 상대적인 파일 경로로 작업을 할 때 Gradle은 '' | * 프로젝트에 상대적인 파일 경로로 작업을 할 때 Gradle은 '' | ||
줄 16: | 줄 16: | ||
===== 현재(1.2) Gradle의 문제점 ===== | ===== 현재(1.2) Gradle의 문제점 ===== | ||
* 의존성에서 '' | * 의존성에서 '' | ||
+ | * Maven보다 프로젝트 컴파일/ 빌드 속도가 느리다. | ||
+ | * 이행적 의존성 충돌이 발생할 때 모르는 사이에 지정한 것보다 높은 버전의 라이브러리를 받아오는 현상이 생긴다. 이것은 문제라기 보다는 Gradle의 의도인데 이것을 이해하지 못하면 의도치 않은 일이 생길 수 있다. [[gradle: | ||
* IDE 지원이 다소 미흡함. 그러나 Eclipse는 대부분 문제가 해결 가능하다. | * IDE 지원이 다소 미흡함. 그러나 Eclipse는 대부분 문제가 해결 가능하다. | ||
줄 36: | 줄 38: | ||
===== provided ===== | ===== provided ===== | ||
- | 기본적으로 Gradle은 provided를 제공하지 않고 있다. 하지만 [[gradle: | + | 기본적으로 Gradle은 provided를 제공하지 않고 있다. 하지만 [[gradle: |
[[http:// | [[http:// | ||
+ | |||
+ | ===== 이행적 의존성으로 인한 라이브러리 버전 변경 대비 ===== | ||
+ | 현재 프로젝트에서 [[http:// | ||
+ | |||
+ | [[gradle: | ||
+ | |||
+ | ===== Profile 흉내내기 ===== | ||
+ | * '' | ||
+ | final String DEFAULT_PROFILE = ' | ||
+ | allprojects { | ||
+ | if (!project.hasProperty(' | ||
+ | ext.profile = DEFAULT_PROFILE | ||
+ | } | ||
+ | |||
+ | // 리소스에 각 프로필별 리소스 디렉토리 추가 | ||
+ | sourceSets { | ||
+ | main { | ||
+ | resources { | ||
+ | srcDir " | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | * 이제 '' | ||
+ | * '' | ||
===== Apache CXF ===== | ===== Apache CXF ===== | ||
줄 52: | 줄 80: | ||
===== projectA의 단위테스트가 projectB의 단위테스트에 의존 ===== | ===== projectA의 단위테스트가 projectB의 단위테스트에 의존 ===== | ||
- | projectA의 단위테스트가 projectB의 단위테스트에 의존하는 경우가 있다. 원칙적으로는 이러면 안된다. projectA와 B간의 의존관계는 메인 자바 소스에 대한 것이어야지 테스트에 대한 것이면 안된다. 하지만 | + | projectA의 단위테스트가 projectB의 단위테스트에 의존하는 경우가 있다. 원칙적으로는 이러면 안된다. |
[[http:// | [[http:// |