maven16 maven effective pom 활용 maven 프로젝트를 구성해서 사용하다 보면 특정 라이브러리가 어떤 버전을 사용하고 있는지 궁금할때가 있다. 이럴때 artifactId 를 Ctrl + 클릭 하면서 찾아 들어가는 경우가 있는데 이와 같은 방법 보다는 다음과 같은 방법으로 하는게 가장 편하다. pom.xml 파일 열기 오른쪽 마우스 클릭 > Maven > Show Effective POM 클릭 버전 정보들을 쉽게 확인할 수 있다. 2019. 8. 23. 메이븐 버전 충돌 해결 pom.xml 에 여러 개의 dependency 설정을 했을 때 각 라이브러리가 참조하는 라이브러리 중 버전이 충돌하는 경우가 있다.예를 들어 다음과 같이 hystrix-core 라이브러리는 commons-logging 1.1.1 버전을 참조하고 있고httpcomponents 라이브러리는 commons-logging 1.2 버전을 참조한다. 12hystrix-core -> commons-logging:1.1.1httpcomponents -> commons-logging:1.2cs 이처럼 두 개의 서로 다른 버전을 참조하고 있을 때 maven은 root 레벨과 가장 가까운 라이브러리를 선택하게 된다.이게 무슨 의미냐 하면mvn dependency:tree 명령을 치면 pom.xml 에 선언되어 있는 의존성.. 2017. 12. 13. Maven 용어 정리 아래 이미지를 참고하자.메이븐의 Lifecycle, Phase, Goal, Plugin에 대해 설명해 주고 있다.[참고 이미지] https://i.stack.imgur.com/tp88Z.jpg LifecycleMaven에는 3가지 라이프사이클을 제공하고 있다.Clean lifecycle : 빌드된 결과물 제거Default/build lifecycle : 빌드 결과물 생성Site lifecycle : Java document 결과물 생성CI 툴을 이용하여 메이븐 빌드를 할 때 mvn clean deploy 와 같이 실행하면 빌드된 결과물을 제거하고 빌드 결과물이 생성된다. Phase라이프사이클의 단계를 의미한다.Phase는 의존관계를 가지고 있다. 예를들어 mvn package 를 실행하게 되면 packa.. 2017. 10. 16. maven build 시 properties 값 변경 방법 properties 파일의 특정 값을 배포 환경에 따라 값을 다르게 하기 위해서 다음과 같이 치환하고자 하는 변수를 추가한다.test.service.url=${test.service.url} 예를 들어서 개발망에서는 test.service.url=http://localhost:8080 으로 셋팅하고 싶은 것이고, 라이브망에서는 test.service.url=http://localhost:9090 으로 셋팅하고 싶은 경우이다. pom.xml 파일의 build 엘리먼트 하위에 다음의 설정 추가메이븐 프로젝트이므로 기본적으로 src/main/resources 디렉토리 하위에 properties 파일을 위치하게 된다.src/main/resourcestrue pom.xml 파일의 profiles 엘리먼트 하위에 .. 2015. 3. 4. 이클립스 indigo m2eclipse-wtp 사용시 maven scope 인식 불가 현상 pom.xml 에 다음과 같이 scope가 provided로 설정되어 있다.javax.servletjavax.servlet-api3.0.1provided 프로젝트의 Web Deployment Assembly 설정을 진행한 후 톰켓 플러그인 가상 배포 디렉토리 경로를 확인해 보면 servlet 관련 jar 파일이 배포되어 있는 것을 확인할 수 있다. .metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\TestProject\WEB-INF\lib 경로에 javax.servlet-api-3.0.1.jar 파일이 배포되어 있는 것이다.이처럼 lib 디렉토리에 서블릿 관련 라이브러리가 배포되어 있으면 jar 파일의 충돌로 인한 문제가 발생되는 경우가 있다.. 2014. 11. 13. maven 빌드 시 war 파일에 buildNumber 추가 maven 빌드 시 생성되는 war 파일뒤에 버전을 추가하자는 의견이 나왔다.현재는 user-1.0.war와 같은 형태로 war 파일을 생성하고 있는데 이를 다음과 같은 형식으로 빌드시마다 빌드넘버를 붙여주고 싶었다.user-1.0.1.waruser-1.0.2.waruser-1.0.3.war 구글에 물어보니 다양한 방법들이 나왔고, 현재 프로젝트에서 메이븐을 사용하고 있기에 메이븐 플러그인을 추가하여 해결할 수 있는 방법을 사용하기로 결정했다. 먼저 다음의 플러그인을 추가하도록 한다. org.codehaus.mojo buildnumber-maven-plugin 1.2 validate create true false {0,number} buildNumber 그런 후 scm 정보를 추가해 준다. scm:gi.. 2014. 6. 26. third party library 사설 리포지토리 없이 dependency 추가하기 메이븐 중앙 리포지토리에서 관리되고 있지 않은 라이브러리를 maven dependency에 추가해 주고 싶을 경우가 있다.회사에서 제공해 주는 jar 파일을 현재 개발중인 메이븐 프로젝트에 추가해 줘야 하는 상황이 발생하였고, 이와 같이 maven 리포지토리에 저장되어 있지 않은 jar 파일을 메이븐 프로젝트에서 사용하기 위해서는 사설 리포지토리를 구축해야지만 dependency를 추가한 후 해당 jar 파일을 사용할 수 있는 것으로 알고 있었다. 헌데 사설 리포지토리를 구축하지 않아도 third party library를 dependency 해 줄 수 있는 방법이 있었다.메이븐 프로젝트의 특정 디렉토리를 repository로 등록하는 방법이다.My-ProjectMy-Project Custom Jarsf.. 2014. 6. 2. maven 빌드 시 tld 파일 jar에 포함시키기 태그 라이브러리 파일을 jar 파일에 포함시키기 위한 설정에 대해서 정리한다.메이븐 project의 src/main/resources 디렉토리 하위에 META-INF 디렉토리를 생성한 후 jar에 포함시키고자 하는 tld 파일을 모두 추가해 준다. 위와 같이 tld 파일을 추가한 후 mvn package goal을 실행하면 tld 파일이 jar파일에 포함되어진다.다음과 같이 포함시킬 파일과 포함시키지 말아야 할 파일을 구분할 수도 있다. src/main/resources **/*.tld **/*.xml **/*.properties 2014. 5. 26. maven debug 모드로 goal 실행 maven package task 실행 시 다음과 같이 INFO 로그와 WARNING 로그가 기록된다.[INFO] ------------------------------------------------------------------------[INFO] Building mySpringProject 1.0.0-BUILD-SNAPSHOT[INFO] ------------------------------------------------------------------------[INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ mySpringProject ---[INFO] Using 'UTF-8' encoding to co.. 2014. 1. 14. maven packaging 시 test 제외 방법 메이븐 빌드 시 test 코드의 수행 시간이 오래 걸려 제외 하는 방법을 찾아 보았다.방법은 다음과 같이 옵션을 추가하면 된다.-Dmaven.test.skip=true 2013. 12. 31. Nexus에 jar파일 올리기 maven 중앙 repository에 jar 파일이 없는 경우 사설 repository에서 다운로드를 제공하려면 해당 jar 파일을 업로드 해야 하는데 업로드 방법을 매번 잊어 먹어 이곳에 정리한다. 순서는 다음과 같이 진행한다. 4번 진행 시 Group 필드에 "fakepath"로 셋팅이 되니 해당 jar 파일의 패키지 경로를 알맞게 넣어주도록 하자. (브라우저에서 보안상의 이유로 중간 path를 fakepath로 바꿈) 2013. 12. 3. 이클립스에서 maven 멀티 모듈 생성 후 Run on Server를 이용하여 각 모듈 구동하는 방법 프로젝트를 진행하다 보면 관리자 웹 사이트, 사용자 웹 사이트, 모바일 웹 사이트 등을 각각 개발하게 되는데 이때 사이트 별로 웹 프로젝트를 생성하여 개발을 하는 경우가 있다. 위와 같은 방식으로 프로젝트를 구성하게 되면 어떤 문제가 발생할 수 있을까? 중복 소스가 발생할 수 있고, 개발 공수도 많이 들어가게 된다. 가장 큰 문제는 중복 코드로 인하여 유지 보수가 엄청나게 힘들어 질 수 있다는 것이다. 이같은 문제를 해소하기 위해 대게 공통으로 사용할 프로젝트를 생성한 후 각각의 프로젝트가 공통 프로젝트를 참조하는 식의 구성으로 개발을 진행하게 된다. 오늘 포스팅은 메이븐 멀티 모듈 생성 후 이클립스 톰켓 플러그인을 통해 웹 애플리케이션 서버를 구동하는 방법에 대해서 정리할 것이다. 나는 다음과 같이 메.. 2013. 3. 27. maven JUnit test가 실행되지 않을 때 maven package를 실행했는데 JUnit으로 만든 테스트 케이스를 실행하지 못하는 현상이 있었다.혹시 @Ignore 애노테이션이 붙어 있어서 그런 것일까?아님 컴파일된 테스트 클래스가 test-classes에 없어서?이클립스 설정 문제 때문에? 발생 가능한 모든 상황들을 다 확인해 보았지만 위의 문제로 인한 것은 아니고, pom.xml에 dependency로 JUnit이 정의되어 있지 않아서 였다. Java Build Path에는 JUnit 라이브러리가 추가되어 있는데 왜 pom.xml에 JUnit 라이브러리를 추가해야 하는지 의문이 들었지만 곧 해답을 찾을 수 있었다. 이클립스의 메이븐 플러그인은 Java Build Path의 라이브러리를 참조하지 못하고, pom.xml에 정의되어 있는 라이브러.. 2013. 3. 22. maven local repository에 jar 추가 FTP 모듈을 사용하게 될 일이 생겨 예전에 만들었던 FTP 프로그램을 메이븐 프로젝트로 옮기게 되었다. 내가 만든 FTP 모듈은 NetComponents-1.3.8.jar 라이브러리를 필요로 하는데 메이븐 중앙 리포지토리에서는 해당 라이브러리를 관리 안하고 있었다. 결국 아래와 같은 명령어를 이용하여 .m2\repository 디렉토리에 NetComponents-1.3.8.jar를 추가하여 문제를 해결 할 수 있었다. mvn install:install-file -Dfile=C:\NetComponents-1.3.8.jar -DgroupId=com.oroinc -DartifactId=NetComponents -Dversion=1.3.8 -Dpackaging=jar -DgeneratePom=true 빨간색.. 2013. 3. 20. maven프로젝트 Run on Server로 tomcat 구동 방법 (첫 번째 방법) 메이븐 기반 웹 프로젝트에서 이클립스의 Run on Server의 tomcat을 구동하면 자꾸 index.jsp 페이지에서 NullPointException이 발생한다. index.jsp 페이지에는 "index" 라는 문자열만 딸랑 있는데 웬 Exception?서블릿관련 jar 파일때문에 꼬였나? 문제 추적 start~ 1. pom.xml 확인pom.xml을 확인해 보면 다음과 같이 되어 있다.scope는 provided로 되어 있으니 프로젝트 컴파일 시에만 사용하고, 배포할 때에는 제외되게 설정하였으니 문제없다.javax.servletservlet-api2.5providedjavax.servlet.jspjsp-api2.1provided 2. build path 확인Java Build Path > Lib.. 2012. 12. 17. 이전 1 2 다음