2013-08-14 3 views
1

다른 두 모듈 (A, B)에 의존하는 war 모듈 (C)이 있습니다. 내가 A를 변경하고 C mvn package에 대해 리 패키징을 수행하면 B가 재 컴파일되고 (아무 것도 변경되지 않지만) 많은 시간이 소요됩니다. maven에게 건너 뛰라고 말하면 어떻게됩니까? Tks.maven, 패키지를 다시 컴파일하지 않고 패키지

+0

어떻게 B가 다시 컴파일된다는 것을 알고 있습니까? 또한 B는 C의 하위 모듈입니까? – yair

+0

A와 B 사이에 의존성이 있습니까? –

+0

@yair 로그에서 볼 수 있기 때문에 컴파일하고 테스트를 진행합니다. 예 B는 C의 하위입니다. –

답변

0

B을 해당 상위 POM에서 제외하여 프로젝트에서 제거하십시오. 개발 프로필에서 그렇게 할 수 있습니다. 이렇게하면 매번 재 컴파일되지 않고 maven 캐시에서로드됩니다.

+0

예, 그게 내가하고있는 일이지만 더 좋은 방법을 찾고 있는데요. 부모 POM 파일을 바꾸어 버린 것을 잊어 버렸을 때, 저의 동료들이 저에게 소리를 질렀습니다 :-p –

1

새로운 컴파일러 플러그인 버전 3.1을 사용하십시오. 그것은 나를 위해 놀랍도록 작동하는 점진적인 컴파일을 수행합니다. 모듈에서 변경 사항을 발견하면 완전한 컴파일을 수행하고, 그렇지 않으면 아무것도 컴파일하지 않습니다. 버전을 업데이트하는 것보다 할 수있는 다른 아무것도 사실 때문에

http://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html

증분 모드는 기본입니다!

물론 미리 정리해서는 안됩니다. 이것은 항상 전체 컴파일로 이어질 것입니다.

+0

덕분에, 잘 작동 했어요. 어쩌면 또 다른 후속 질문 : 내가 말한 것을 볼 수 있습니다 : 변화가 감지, 재 컴파일 ...하지만 일부 모듈에서는 정말 아무것도 (나는 그 모듈의 코드 파일을 열지 않았으므로 절대적으로 확신합니다), 어떤 아이디어 Maven 컨텍스트에서 "변경"되는 것은 무엇을 의미합니까? –

+0

@Tungmaile : 플러그인은 스마트 알고리즘을 적용하지 않습니다. 모듈 B에서 뭔가를 변경하고 A가 그것에 의존하면 두 가지를 모두 빌드합니다. 그 변화가 A.에 영향을 미치는지는 중요하지 않습니다. 이것은 또한 힘입니다. Jenkins에서 실행할 수 있으며 "스마트 한"증분 컴파일과 관련하여 문제가 없습니다. – sorencito

+0

경고! 2013 년 11 월에 maven-compiler-plugin의 증분 컴파일을 평가했을 때 사실 B가 변경된 모듈 A를 다시 빌드하지 않았습니다. 기본적으로 증분 컴파일이 끊어 졌음을 의미하며이를 활성화하는 것은 위험합니다. 또한'useIncrementalCompilation = true'는 실제로 https://issues.apache.org/jira/browse/MCOMPILER-209 때문에 비활성화됩니다. –

0

-pl 옵션을 사용할 수도 있습니다. Pl은 "프로젝트 목록"을 의미합니다. 당신은 깨끗한

이는이 두 프로젝트를 빌드 할를 설치

MVN -pl myProjA, myProjB

를 입력합니다. 그러나 빌드 할 때 필요한 프로젝트를 감독 할 수도 있습니다.

http://java.dzone.com/articles/5-maven-tips

은 내가 받는다는 문서에이를 찾을 수 없습니다,하지만 난 너무,있을거야.

관련 문제