Tag Archives: Maven

Gradle을 왜 써야하나

그래들.. Ant/Maven/Ivy 등 자바의 다양한 빌드 툴중 하나 정도…

Java를 주로 쓰고 Groovy를 보조로 그리고 요즘 Scala를 살짝 보려고 하고 있는데… 순수 Java개발이라면 상관없지만 복합적인 프로젝트를 만들려면 Gradle이 필수적이다.
(Maven으로 해도 되긴 하는데..  예전에 시도했을 때는 groovy의 특정 버전이 안먹힌다던가 하는 문제가 있었다)

scala는 또 따로 sbt가 있긴하던데… 비슷한 기술들을 이것저것 익힐 필요는 없을 것 같고 조금 더 많이 사용하는 Gradle을 쓰는게 낫지 않을까 호환성 측면에서도
gradle vs sbt 참고자료 : http://stackoverflow.com/questions/11061938/comparing-sbt-and-gradle
요약하면 sbt는 ivy기반이고 snapshot 라이브러리(버전을 중복해서 막 배포하는 라이브러리)에 대응하지 못한다는 것.(인것같다)

개인적으로는 네이티브 자바 라이브러리 개발 및 배포 상황에서 메이븐 셋팅을 다 갖춰놓았기 때문에 이 부분까지 Gradle로 대체할 생각은 없고 java groovy scala를 복합적으로 적용해야 하는 상황에만 사용할 예정이다.

 

Gradle관련 공부하면서 본 책

[도서]엔터프라이즈 자동화를 위한 그래들
여태껏 Gradle 셋팅을 튜토리얼만 찾아보면서 배워가지고
좀 더 구석구석 공부하려고 책을 봤는데
튜토리얼이 다인 것 같다.
한글로 읽어서 편하고 빠르게 이해할 수 있다는 점에서 만오천원 정도 쓸 가치는 있다.
번역서도 아니고 저자가 직접 저술한 책이라 어설픈 번역투도 없어서 이해도 더 잘된다.

 

Gradle을 왜 써야하나

Gradle이 대세이고 지금 기능도 제일 좋은 것 같다.
다른걸 잘 써 왔고 사용하려는 기능이 다 제공된다면 굳이 바꿔야할 필요가 없지만, 배워놓을 필요는 있는 것 같다.
처음 배운다면 Java/Scala/Groovy 뭘 하던 Gradle.

Gradle 참고자료

Gradle 공식 소스코드
https://github.com/gradle/gradle
Gradle 공식홈페이지

Gradle l Modern Open-Source Enterprise Build Automation


groovy 테스트 라이브러리
https://github.com/spockframework/spock-example

tiles2 tiles3 변경 적용시 주의점

servlet-context.xml

tiels2 설정

maven버전을 변경하고 여기서 2를 3으로 고치면 에러도 안뜨고 이상이 없어 보이지만…

로딩이 안된다. ClassNotFoundException

아마 이 에러?

이무렇지도 않게 pom.xml을 켜서 의존성 문제를 해결하면 끝.

tiles2 tiles3는 버전이 그냥 올라간게 아니라 거의 라이브러리가 바뀐 수준인 것 같다. 그런데 이름을 유지하고 있다. 하위호환성이 제로면.. 아예 패키지명이라도 바꾸던가 좀..
어쨌든 2.x버전을 3.x로 마이그레이션 할 때 pom에 2.x버전이 남아있게 되면 별별오류가 뜬다. 3.0.5버전부터는 jdk6도 지원을 안한다고 하니 주의.
아직 jdk6쓰는사람 잘 없을 것 같지만…
이것만 주의하면 매우 쉽다. 그냥 servlet-context에서 tiles2 -> tiles3으로 바꿔주면 된다.

Maven Deploy to Nexus

1. pom.xml편집

여기저기 할게 많은데… 이 부분이 중요
xml에서 deploy할 nexus주소를 적어준다

2. nexus셋팅

Repo를 하나 생성

deploy계정 생성

3. settings.xml 셋팅

기본위치 ~/.m2/settings.xml
사용자는 pom.xml에 기록한 nexus 아이디 패스워드 deploy 권한을 가지고 있는 계정
id는 사용자 아이디가 아닌 repository id

4. maven testcase 오류나는 경우

5. 기타 배포오류

404 주소를 잘못친듯

502 주소를 잘못친듯

503 권한 안줘서 user_role, privileges 설정에서 권한을 줘야한다. 배포는 edit 권한