2012-07-31 7 views
0

m2eclipse 플러그인에는 패키지 된 jar를 사용하는 대신 업스트림 종속성의 target/classes 디렉토리를 사용하도록 다운 스트림 Maven 프로젝트에 알려주는 프로젝트 옵션 "작업 공간 프로젝트의 종속성 해결"이 있습니다. 같은 것을 할 mvn 말할 어떤 방법이 있습니까? 내가 실행하기 전에패키지되지 않은 프로젝트를 Maven에서 의존성으로 사용할 수 있습니까?

나는 두 개의 프로젝트, foobar이있는 경우 예를 들어

, 그리고 bar 내가 패키지 및 foo를 설치해야 명령 행에 다음 foo에 따라 bar :

cd ~/foo 
mvn package install 
cd ~/bar 
mvn prepare-package 
java -cp target/classes:$(mvn -o -q -Dmdep.outputFile=/dev/stdout dependency:build-classpath) Bar 

그러나 나는 모든 프로젝트를 패키징하는 것을 피하고 싶다. 1) 많은 I/O가 중복되고, 2) Eclipse에 저장하고 명령 행에서 실행하면 모든 프로젝트를 다시 패키징하는 것을 잊어 버리기 쉽다. 왜 내 변화가 효과가 없는지 궁금해 낭비 시간.

따라서 mvn 명령이 리포지토리 대신 mvn prepare-package의 언팩 된 클래스를 사용하도록 pom.xml을 변경할 수있는 방법이 있습니까?

답변

0

왜이 같은 멀티 모듈 프로젝트에 foo는 바 넣지 마십시오 : 같은 구조로,

PROJ 
    + foo 
    + bar 

을, 당신은 foo는을 구축하고 별도 바 안된다. PROJ 레벨로 제작하면 모든 것이 잘됩니다. 의존성은 원자로 내에서 해결되므로 명시 적으로 하나씩 설치하지 않아도됩니다.

언급 한 "추가 IO"를 저장하지 않지만 솔직히 유일한 차이점은 실제로 일어난 다른 것들과 비교하여 최소한의 JAR을 생성한다는 것입니다.

두 번째 인수도 유지되지 않습니다. 실제로 Eclipse와 명령 행 대상 디렉토리를 섞어서는 안됩니다. Eclipse의 많은 기능은 출력 폴더의 외부 변경에 민감합니다. 언급 한 내용 (Eclipse에서 저장하고 명령 줄 빌드에서 업데이트 된 클래스 파일을 가져올 것으로 예상되는)을 수행하면 명령 줄 빌드가 Eclipse의 출력 데이터를 "손상"시켜 Eclipse에서 문제를 일으킬 수 있습니다. (사람들이 대신 출력 폴더를 분리하는 방법을 생각해냅니다 : http://www.jroller.com/eu/entry/configuring_separate_maven_output_folders)

관련 문제