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

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

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

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

1. 메이븐 플러그인 추가

apply plugin: ‘maven’

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

gradle tasks

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

3. 메이븐 pom 파일 생성

gradle writeNewPom

끝~

[Gradle] 의존성 스코프가 아쉽다.

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

지금 Gradle이 지원하는 의존성 스코프는 네가지다.

  • compile
  • runtime
  • testCompile
  • testRuntime

흠냐.. 정말 이것뿐이다. 너무 허전하지 않은가. 메이븐으로 의존성을 설정할 때 종종 사용하는 스코프가 없다. 뭘까? 뭐가 빠졌을까?

provided가 없다!! 이런… 젠장;; 그럼 서블릿 API도 compile 스코프로 넣어두고 쓰라는 얘긴가??

다행히 톰캣7이 똑똑해져서 그런지 몰라도… javax.servet.ServletConfig인가.. 이런 클래스가 감지되면 해당 JAR 파일을 로딩하지 않는것 같다. 톰캣이 뜰 때 로그를 보면 그렇게 보인다.

아무리 그래도 이런 방법에 기대는 건 좋치 않은것 같다. 그래들이 어서 provided 스코프를 지원해주면 좋겠다.

http://issues.gradle.org/browse/GRADLE-784

찾아보니까 이슈가 올라와있긴한데… 언제 될런지는 미지수. 필요없다고 생각하는건가;

서블릿 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

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

[메이븐 저장소] war 버전 Nexus 설치 및 설정

http://www.sonatype.com/books/nexus-book/reference/install.html

1. 다운받기

http://nexus.sonatype.org/downloads/

이곳에서 번들 형태를 받을 수도 있고 war 파일을 받을 수도 있습니다. 번들형태는 서블릿 컨테이너가 내장된 형태로 제공되고 있고 war는 기존의 서블릿 컨테이너나 애플리케이션 서버에 배포해서 설치할 수 있는 형태로 제공됩니다.

war 버전을 설치할테니 최신버전 war 파일을 다운 받습니다.

2. 톰캣에 배포

톰캣 홈 디렉토리/webapp 폴더에 복사해 넣습니다. 이때 war 파일 이름을 nexus.war로 바꿔주면 URL이 좀 간단해 집니다.

mv ./nexus-webapp-1.8.0.1.war ./nexus.war

이제 톰캣 홈 디렉토리/bin 폴더로 가서 톰캣을 실행합니다.

./catalina.sh start

3. Nexus로 접속하기

http://localhost:8080/nexus/

war 파일 이름을 nexus.war로 변경했기 때문에 톰캣을 실행하고 나면 위와 같은 URL로 Nexus에 접근할 수 있습니다.

4. Admin 로그인 하기

Nexus를 설치하고나면 우선 로그인을 해서 관리자 계정 비밀번호를 변경해야 합니다. 그럴려면 로그인을 해야 하는데 기본 계정은 다음과 같습니다.

admin/admin123

화면 우측 상단의 Log In 링크를 클릭해 로그인합니다.

그럼 이렇게 왼쪽에 몇가지 관리용 탭이 생기는데 그중에 Security 탭에서 비번을 변경하면 됩니다.

그밖에도 배포용 계정도 기본으로 설정되는데 그것도 역시 비번을 바꿔주는게 좋습니다.

http://www.sonatype.com/books/nexus-book/reference/install-sect-repoman-post-install.html

여기를 참조하세요.

5. 저장소 추가하기

기본으로 여러 저장소가 설정되어 있는데 group, proxy, hosted 이 세종류만 잘 알면 됩니다.

group은 nexus에 설정되어 있는 다른 저장소들을 하나로 묶은 저장소로 생각하면 되는데 그렇게 해야 메이븐의 저장소 설정을 간추릴 수 있습니다.

proxy는 다른곳에 있는 기존의 메이븐 저장소를 등록하는 겁니다. jboss와 spring 저장소를 proxy 형태로 등록해두면 이 Nexus에서 필요한 의존성을 jboss와 spring 저장소에서 받아올 수 있습니다.

hosted는 다른 저장소에 없는 파일 또는 proxy를 통해 제공받을 수 없는 파일인 경우에 직접 메이븐 저장소에 올려줘야 하는데 그럴 때 사용하는 저장소 형태가 바로 hosted 입니다. 그런데 이미 hosted 타입의 저장소는 기본으로 등록되기 때문에 별일 없다면 그걸 그냥 사용하면 됩니다.

그래서 보통 proxy를 추가하고 hosted에 필요한 라이브러리를 넣어주고 이 둘을 잘 조합해서 group으로 묶어주는 작업을 해야 합니다.

지금은 jboss 저장소를 proxy 저장소로 등록해 보겠습니다.

이런식으로 JBoss 저장소를 추가했습니다.

6. group 저장소 설정

이제 nexus에 기본으로 설정되어 있는 group 저장소인 Public Respositories라는 것을 설정합니다.

이런식으로 방금 추가한 JBoss 저장소를 Public Repositories에 추가해주면 됩니다.

7. 메이븐 설정

이제껏 설정한 Nexus를 통해 필요한 의존성을 가져오도록 하려면 메이븐의 settings.xml이나 각 프로젝트의 pom.xml에 저장소를 설정해줘야 합니다.

그럴려면 저장소 URL을 알아야하는데 Nexus의 Repository Path에 있다.

http://www.sonatype.com/books/nexus-book/reference/maven-sect-single-group.html

여기에 보면 설정이 들어있으니 참조하시길~