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 에 선언되어 있는 의존성..
아래 이미지를 참고하자.메이븐의 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..
태그 라이브러리 파일을 jar 파일에 포함시키기 위한 설정에 대해서 정리한다.메이븐 project의 src/main/resources 디렉토리 하위에 META-INF 디렉토리를 생성한 후 jar에 포함시키고자 하는 tld 파일을 모두 추가해 준다. 위와 같이 tld 파일을 추가한 후 mvn package goal을 실행하면 tld 파일이 jar파일에 포함되어진다.다음과 같이 포함시킬 파일과 포함시키지 말아야 할 파일을 구분할 수도 있다. src/main/resources **/*.tld **/*.xml **/*.properties
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..
메이븐 빌드 시 test 코드의 수행 시간이 오래 걸려 제외 하는 방법을 찾아 보았다.방법은 다음과 같이 옵션을 추가하면 된다.-Dmaven.test.skip=true
maven 중앙 repository에 jar 파일이 없는 경우 사설 repository에서 다운로드를 제공하려면 해당 jar 파일을 업로드 해야 하는데 업로드 방법을 매번 잊어 먹어 이곳에 정리한다. 순서는 다음과 같이 진행한다. 4번 진행 시 Group 필드에 "fakepath"로 셋팅이 되니 해당 jar 파일의 패키지 경로를 알맞게 넣어주도록 하자. (브라우저에서 보안상의 이유로 중간 path를 fakepath로 바꿈)
maven package를 실행했는데 JUnit으로 만든 테스트 케이스를 실행하지 못하는 현상이 있었다.혹시 @Ignore 애노테이션이 붙어 있어서 그런 것일까?아님 컴파일된 테스트 클래스가 test-classes에 없어서?이클립스 설정 문제 때문에? 발생 가능한 모든 상황들을 다 확인해 보았지만 위의 문제로 인한 것은 아니고, pom.xml에 dependency로 JUnit이 정의되어 있지 않아서 였다. Java Build Path에는 JUnit 라이브러리가 추가되어 있는데 왜 pom.xml에 JUnit 라이브러리를 추가해야 하는지 의문이 들었지만 곧 해답을 찾을 수 있었다. 이클립스의 메이븐 플러그인은 Java Build Path의 라이브러리를 참조하지 못하고, pom.xml에 정의되어 있는 라이브러..
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 빨간색..