rootProject.file()
로 쉽게 구성 가능하다.(특히 Eclipse linkedResources 적용할 때)build.gradle
혹은 buildSrc
를 통해 자신만의 플러그인과 태스크를 매우 쉽게 정의할 수 있다.provided
를 기본으로 제공하지 않고 있다. 하지만 방법은 있다. configurations
를 직접 구성해야한다.> groovy dependencies pom.xml "com.google.guava:guava:10.0.1", "spy:spymemcached:2.7", "org.codehaus.jettison:jettison:1.3", .....
기본적으로 Gradle은 provided를 제공하지 않고 있다. 하지만 Gradle Web(War) Plugin 프로젝트는 providedCompile
을 지원하고 있으며, 유사 기능을 흉내낼 수 있다.
현재 프로젝트에서 spring-data-jpa를 사용하는데, 이 모듈이 Spring Core/Beans 등에 대해 가변 버전으로 의존하고 있다. 이에 따라 현재 프로젝트의 공식 Spring 버전은 3.1인데, 이행성과 가변 버전 변경에 따라 Core/Beans 등이 3.2.0.M2로 지정되는 현상이 발생하였다.
Gradle Dependencies를 참고하여 의존성 버전 관리 전략에 failOnVersionConflict()
을 넣어 주고 항상 명시하는 것이 좋아보인다.
gradle -Pprofile=production
형태로 호출하면 모든 프로젝트에서 profile
속성에 production
이라는 값이 지정된 상태가 된다. 이에 따라 가변적인 행동을 정의해 준다.-Pprofile
을 생략하면 기본인 DEFAULT_PROFILE
상수의 값 development
로 작동하게 된다.Apache CXF로 SOAP Client Class 생성하는 것은 JavaExec 태스크로 하면 된다. CXF 참조
Annotation Processing은 원칙적으로는 컴파일 과정에서 자동으로 수행된다.
하지만 JPA 2 MetaModel 생성같이 소스를 생성해야 할 경우가 있는데 그럴 때는 -proc:only
옵션으로 독립적으로 소스 생성만 하는 컴파일러를 돌려주고 그 뒤에 실제 컴파일을 수행하도록 실행 계획을 짜면 된다.
Lombok의 경우에도 아무 설정도 할 필요없다. 클래스패스에만 있으면 자동으로 수행된다.
projectA의 단위테스트가 projectB의 단위테스트에 의존하는 경우가 있다. 원칙적으로는 이러면 안된다. 근본적으로 projectA와 B간의 의존관계는 메인 자바 소스에 대한 것이어야지 테스트에 대한 것이면 안된다. 하지만 어쨌든 이런 상태로 컴파일과 실행이 가능하게 만들 수는 있다.