2013-12-15 5 views
3

다양한 스프링 모듈을 활용하는 독립형 응용 프로그램을 빌드하는 pom 파일이 있는데, 특히 통합 파일 모듈을 사용합니다. 원래 pom 파일은 Maven 어셈블리 플러그인을 사용했지만 생성 된 uber jar 파일이 제대로 실행되지 않았습니다. 추가 연구에 따르면 어셈블리 플러그인에 버그가있어 기본적으로 uber jar의 종속성을 엉망으로 만듭니다. 권장되는 해결 방법은 나를 위해 작동하는 Shade 플러그인입니다.어셈블리 플러그인과 같이 Maven 음영 플러그인을 사용합니다.

그러나 어셈블리 플러그인은 uber jar 및 기타 리소스 (속성 파일, 스크립트 등)가 포함 된 zip 파일을 만들 수 있습니다. 그런 다음 지퍼를 사용하여 압축을 풀고 항아리를 호출하고 다른 항목을 전달하는 스크립트를 실행할 수 있습니다 (예 :). 늘어나는만큼 그늘 플러그인을 말할 수있는이 추가 기능을 수행하지 않습니다.

프로필을 사용하여 음영 및 어셈블리 플러그인을 조합 해 보았지만 음영 병을 빌드하는 데 음영 플러그인을 사용하는 방법을 알아낼 수 없으며 이후 어셈블리 플러그인을 사용하여 zip을 빌드합니다 다른 것들.

비슷한 일을 한 사람이 있습니까? 난 그냥 내 uper 항아리를 만들고 스크립트, xml 및 기타 항목으로 uber jar 파일을 압축 할 수 있어야합니다.

어셈블리 플러그인을 단계에 바인딩하지 않고 실행하는 방법이 있습니까? 만약 그렇다면 패키지를 실행하고 그늘 플러그인을 실행 한 다음 나중에 어셈블리 플러그인을 독립적으로 실행할 수 있습니까? 그것은 가능한 경우 내 문제를 해결할 것입니다.

+0

POM의 중요한 부분이 포함 된 경우 도움이 될 수 있습니다. – Raedwald

답변

2

zip을 어셈블하기 위해 멀티 모듈 프로젝트에서 별도의 모듈을 사용하는 것이 일반적입니다. 너에게 재미있을 수도있는 appassembler-maven-plugin도있다 (나는 결코 그것을 사용하지 않았다.).

단계없이 플러그인 실행 : 항상 가능합니다. 목표 페이지에 지정된 전체 이름을 실행하십시오. 이 경우 org.apache.maven.plugins:maven-assembly-plugin:2.4:single 또는 짧게는 assembly:single입니다.

프로필로 해결하지 마세요. 그 내용은 의미가 없습니다.

+0

어셈블리 호출 : 패키지 단계가 끝난 후 싱글! 프로필도 삭제했습니다. 감사! – Jon

3

이 답변에는 조금 늦었지 만, 나는 당신과 같은 시나리오를 가지고 있습니다 ("패키지 단계": 1. 그늘을 지닌 uber-jar를 빌드하십시오, 2. 어셈블리 zip으로 압축하십시오). 플러그인을 지정하는 순서를 pom.xml으로 변경하십시오.

조립하기 전에 음영을 지정하면 동일한 단계에서 이전에 실행됩니다.