사용자 도구

사이트 도구


gradle:from_maven

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
gradle:from_maven [2012/10/19 15:31]
kwon37xi [현재(1.2) Gradle의 문제점]
gradle:from_maven [2014/06/20 01:18] (현재)
kwon37xi [Gradle이 Maven보다 좋았던 점]
줄 7: 줄 7:
   * Maven은 상속 구조를 사용해 멀티 모듈을 구현한다. Gradle은 구성 주입(Configuration Injection)을 사용한다.   * Maven은 상속 구조를 사용해 멀티 모듈을 구현한다. Gradle은 구성 주입(Configuration Injection)을 사용한다.
     * Maven에서 특정 설정을 몇몇 모듈에서만 공통으로 사용하려면 불필요하게 부모 프로젝트를 생성하여 설정하고 그것을 자식들이 상속하게 해야 한다. 게다가 다른 모든게 같더라도 약간이라도 설정이 다른 프로젝트가 하나라도 있다면 그 프로젝트는 상속을 할 수 없고, 거의 모든 설정을 중복해서 해당 프로젝트에 넣어줘야 한다.     * Maven에서 특정 설정을 몇몇 모듈에서만 공통으로 사용하려면 불필요하게 부모 프로젝트를 생성하여 설정하고 그것을 자식들이 상속하게 해야 한다. 게다가 다른 모든게 같더라도 약간이라도 설정이 다른 프로젝트가 하나라도 있다면 그 프로젝트는 상속을 할 수 없고, 거의 모든 설정을 중복해서 해당 프로젝트에 넣어줘야 한다.
-    * Gradle은 공통 설정을 조건에 따라 특정 프로젝트에만 주입 가능하다. 불필요한 프로젝트는 필요없다.+    * Gradle은 공통 설정을 조건에 따라 특정 프로젝트에만 주입 가능하다. 불필요한 상속 전용 프로젝트는 필요없다.
   * 프로젝트에 상대적인 파일 경로로 작업을 할 때 Gradle은 ''rootProject.file()'' 로 쉽게 구성 가능하다.(특히 Eclipse linkedResources 적용할 때)   * 프로젝트에 상대적인 파일 경로로 작업을 할 때 Gradle은 ''rootProject.file()'' 로 쉽게 구성 가능하다.(특히 Eclipse linkedResources 적용할 때)
   * Maven은 자신만의 플러그인을 만들기가 힘들다. 하지만 Gradle은 ''build.gradle'' 혹은 ''buildSrc''를 통해 자신만의 플러그인과 태스크를 매우 쉽게 정의할 수 있다.   * Maven은 자신만의 플러그인을 만들기가 힘들다. 하지만 Gradle은 ''build.gradle'' 혹은 ''buildSrc''를 통해 자신만의 플러그인과 태스크를 매우 쉽게 정의할 수 있다.
줄 46: 줄 46:
  
 [[gradle:dependencies|Gradle Dependencies]]를 참고하여 의존성 버전 관리 전략에 ''failOnVersionConflict()''을 넣어 주고 항상 명시하는 것이 좋아보인다. [[gradle:dependencies|Gradle Dependencies]]를 참고하여 의존성 버전 관리 전략에 ''failOnVersionConflict()''을 넣어 주고 항상 명시하는 것이 좋아보인다.
 +
 +===== Profile 흉내내기 =====
 +  * ''-Pprofile=값'' 형태의 옵션으로 Maven의 Profile을 흉내낼 수 있다.<code groovy>
 +final String DEFAULT_PROFILE = 'development'
 +allprojects {
 +    if (!project.hasProperty('profile') || !profile) {
 +        ext.profile = DEFAULT_PROFILE
 +    }
 +
 +    // 리소스에 각 프로필별 리소스 디렉토리 추가
 +    sourceSets {
 +        main {
 +            resources {
 +                srcDir "src/main/resources-${profile}"
 +            }
 +        }
 +    }
 +}
 +</code>
 +  * 이제 ''gradle -Pprofile=production''형태로 호출하면 모든 프로젝트에서 ''profile'' 속성에 ''production''이라는 값이 지정된 상태가 된다. 이에 따라 가변적인 행동을 정의해 준다.
 +  * ''-Pprofile''을 생략하면 기본인 ''DEFAULT_PROFILE'' 상수의 값 ''development''로 작동하게 된다.
 +
 ===== Apache CXF ===== ===== Apache CXF =====
 Apache CXF로 SOAP Client Class 생성하는 것은 JavaExec 태스크로 하면 된다. [[java:webservices:cxf|CXF]] 참조 Apache CXF로 SOAP Client Class 생성하는 것은 JavaExec 태스크로 하면 된다. [[java:webservices:cxf|CXF]] 참조
gradle/from_maven.1350628272.txt.gz · 마지막으로 수정됨: 2012/10/19 15:31 저자 kwon37xi