[Gradle] 메이븐 pom 파일 만들기

http://gradle.org/docs/current/userguide/maven_plugin.html

그래들로 메이븐 pom 파일을 만들 수 있다.

물론 완벽하게 만들어 주기를 기대하긴 어렵겠지만… 어차피 그정도까지는 기대도 안하니깐 뭐;; 대충 와꾸라도 만들어 주면 고마울뿐!

1. 메이븐 플러그인 추가

apply plugin: ‘maven’

2. 메이븐 플러그인 설치 확인

gradle tasks

이 명령을 실행해서 메이븐 관련 태스크가 추가됐나 확인.

3. 메이븐 pom 파일 생성

gradle writeNewPom

끝~

서블릿 3.0 메이븐 의존성은?

2.5까지는 groupId가 javax.servlet이고 artifactId가 servlet-api이고 version은 2.4나 2.5썼었으니까 3.0도 버전만 3.0으로 바꾸면 되겠지라고 생각했지만 안 그랬다.

그래서 좀 찾아봤는데 이게 답인것 같다.

http://stackoverflow.com/questions/1979957/maven-dependency-for-servlet-3-0-api

여길보면 조금 엉뚱한게 답변으로 채택되어있는데 굳이 써드파티 메이븐 저장소에서 끌어오도록 하느니.. 되도록이면 중앙 저장소에서 가져오는게 더 깔끔하고 신뢰가간다. 그래서 난 앞으로 저렇게 쓸 계획이다.

[maven] 버전 범위 지정 비추합니다.

아주 위험합니다. 스프링 같이 하위 호환성을 매우 잘 유지시켜주는 프레임워크나 라이브러리를 의존성으로 추가하는 경우에나 버전 범위를 지정하면 모를까.. 그 이외의 JUnit을 포함한 Twitter4J 같은 라이브러리는 전혀 하위 호환성이 유지 되지 않기 때문에 조심해야 합니다.

버전은 꼭 명시적으로!!!!


[maven] 역시 나만 불편한게 아니였어.

[xml]
<sourceDirectory>src/main</sourceDirectory>
<testSourceDirectory>src/test</testSourceDirectory>
<resources>
<resource>
<directory>src/main</directory>
</resource>
</resources>
<testResources>
<testResource>
<directory>src/test</directory>
</testResource>
</testResources>
[/xml]

 

이 코드는 스프링 소스 직원이 3.1 m1 예제 코드에서 작성한 메이븐 설정 파일인데 지금 내가 사용하고 있는 코드와 거의 비슷한 구조로(완전히 같지는 않고 설정도 뭔가 미흡해 보이지만) 사용하고 있는 코드를 발견했습니다. 이미 오래전부터 여러번 포스팅 했던 내용인지라.. 또 쓰고 싶진 않네요.ㅋㅋ

암튼.., 메이븐 기본 패키지 구조는 너무 불편합니다.

1. depth가 필요 이상으로 깊어지고.

2. 소스와 관련된 설정을 찾기가 힘들고

3. 처음 보는 사람에게는 낯설답니다.

마치 빌드계의 EJB라고 할까나.. 하지만 다행인 것은 패키지 구조를 얼마든지 설정을 사용해서 원하는 대로 고쳐서 쓸 수 있다는 거…

Plain Old Java Proejct Structure(POJPS)를 원한다!!

OpenSprout Nexus 이용하여 스프링 3.0 라이브러리 추가하기

참조:
Spring 3.0 (4) – Maven에서 Spring 3.0 최신버전 사용하기
Spring3.0 (5) – 스프링 모듈의 의존관계
Maven의 version range를 사용할 때 주의할 점

일단 사부님이 관리 중인 OpenSprout Nexus를 메이븐 settings.xml나 프로젝트의 pom.xml에 등록해 주세요.

<repository> 
    <id>spring-latest</id> 
    <name>Spring Latest by OpenSprout</name> 
    <url>http://www.opensprout.org/nexus/content/repositories/spring-latest</url> 
</repository> 

다음으로 스프링 번들 리파지토리도 등록해주세요.

<repository> 
    <id>com.springsource.repository.bundles.external</id>  
    <name>SpringSource Enterprise Bundle Repository – External Bundle Releases</name> 
    <url>http://repository.springsource.com/maven/bundles/external</url> 
</repository>

이제 준비는 끝났습니다. 본격적으로 스프링 3.0 라이브러리를 추가하면 됩니다. 추가하는 방법은 두 가지가 있을 수 있습니다. 모든 라이브러리를 직관적으로 명시해주는 방법과 추이적 종속성을 이용하여 반드시 명시해야 할 것만 명시하는 방법이 있습니다.

사용자 삽입 이미지원본 이미지: http://toby.epril.com/?p=598

사부님이 그린 그림을 보면 빨간색 박스로 표시한 라이브러리만 추가하면 파란색으로 칠한 모든 라이브러리를 추이적으로 가져올 거라는 것을 알 수 있습니다. 따라서.. pom.xml에 다음과 같이 설정하면 스프링 라이브러리 중에 필요한 것은 대부분 가져옵니다.

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>org.springframework.web.servlet</artifactId>
            <version>[3.0.0.BUILD-00000000000000,9.9.9.BUILD]</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>org.springframework.aspects</artifactId>
            <version>[3.0.0.BUILD-00000000000000,9.9.9.BUILD]</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>org.springframework.orm</artifactId>
            <version>[3.0.0.BUILD-00000000000000,9.9.9.BUILD]</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>org.springframework.test</artifactId>
            <version>[3.0.0.BUILD-00000000000000,9.9.9.BUILD]</version>
        </dependency>

버전 범위 표시를 저렇게 한 이유는 세 번째 참조 글에서 확인할 수 있습니다.

이렇게 해서 가져온 라이브러리들을 M2Eclipse 플러긴의 Dependency Graph 또는 Dependency Hierarchy로 확인할 수 있습니다.

사용자 삽입 이미지사용자 삽입 이미지
스프링 3.0이 어떤 제 3 라이브러리(어떤 버전을) 사용하는지 궁금하다면

http://spreadsheets.google.com/pub?key=ppDRa3Yit-05zS2cqWYFlNA

사부님이 작성하신 위 문서를 참조하시면 됩니다.

나이스!! 이제는 드디어 스프링 3.0 개발을 시작합니다~