이것은 Maven에서 할 수있는 것이 아닙니다. Maven의 관점에서, 특정 이름을 가진 모든 JAR은 같은 이름을 가진 다른 모든 JAR과 정확히 동일해야합니다.
예를 들어, 내 프로젝트가 abc-1.0.jar
에 달려 있다고 가정 해 봅시다. Alphabet 팀이 1.0 버전에 대해 지정된 API를 사용하여 abc
라이브러리를 게시했기 때문에이 종속성을 지정합니다. 필자는 세계의 모든 저장소에서이 jar 파일을 가져올 수 있어야합니다. 내 인터넷이 꺼져 수동으로 내 로컬 저장소에 설치 될 때까지 내 이웃의 거리에서 파일을 가져올 수 있어야하며 정확히 동일한 파일이어야합니다. 동일한 파일이 아니라면, jar 파일 내부에있는 .class
파일이 오류없이 빌드를 성공시키는 데 필요한 라이브러리 코드를 포함한다는 보장을하지 못합니다.
당신이 인 경우 실제로이 작업을하도록 동기 부여를 받았다면 이론적으로 가능합니다.
- 가
properties
섹션의 POM의 XML을 구문 분석하고 거기에서 개별 속성뿐만 아니라 종속성 항아리의 이름이 분류 자와 모든 종속 항아리를 들어
- 을 "구문 분석 : 당신이하는 스크립트를 작성할 수 있습니다 manifest_injected ", 로컬 저장소에서 찾으십시오. 존재하지 않는 경우, 종속성이있는 빈 Maven 프로젝트 (
manifest_injected
분류 자 없음)를 실행하고 mvn validate
을 실행하여 종속성이 다운로드되어 로컬 저장소에 있는지 확인하십시오.
- 복제본 모든 JAR 파일을 열고, 클론을 열고, 이전에 구문 분석 한 속성으로 필요한 매니페스트 주입을 수행하고, 주입 된 jar를 Maven 저장소의 적절한 위치에 저장합니다.
- 스크립트에 전달 된 Maven 빌드를 논증.
행운을 빌어 요!
왜 그런 짓을하고 싶습니까? 그 인공물은 이미 만들어져 있습니다. 다시 말해서 불변의 것을 의미합니다. 당신은 maven-dependency-plugin과 maven-assembly-plugin의 조합을 통해 해당 아티팩트를 변경할 수 있지만 정말 큰 pom 파일을 생성합니다. 다른 한편으로는 Maven에 반대되는 이미 만들어진 인공물을 바꾸고 있습니다. – khmarbaise
@ Wimpie 해결책을 찾았습니까? –
'maven-assembly-plugin'은 매니페스트 설정을 지정할 수있게 해주지 만, 현재 [manifest] (http://jira.codehaus.org/browse/MASSEMBLY-450)는 기존의 매니페스트를 병합하지 못하게합니다. 추가 매니 페스트 항목이 있습니다. 나는 똑같은 일을 시도하고 실패했기 때문에 이것을 발견했다. – user944849