2012-07-22 2 views
0

maven 모듈의 클래스와 리소스의 타임 스탬프를 jar에 내장되기 바로 전에 설정하려고합니다. 나는 maven-antrun-plugin을 사용할 수 있다고 생각하지만, 더 좋은 아이디어가 있는지 알고 싶습니다.maven은 jar를 패킹하기 전에 타임 스탬프를 설정합니다.

누구나 아이디어가 있습니까?

이 기능이 필요한 이유에 대해 자세히 설명 드리겠습니다.

제품의 새 버전을 빌드 할 때 이전 빌드의 모든 아티팩트를 현재 버전과 비교하고 다른 버전 만 패키징하는 패치 설치를 빌드합니다.

Jar (및 모든 zip 기반 아카이브)는 동일한 내용을 가질 수 있지만 클래스 및 자원의 타임 스탬프는 메타 데이터의 일부이므로 diff에 jar가 다른 것으로 표시됩니다 (실제로 내용이 동일 할 경우). 항아리 포장을 해킹하고 모든 수업 시간을 일정하게 유지하려고합니다 (예 : 1/1/2000 00:00).

나는 이것이 내 필요성을 설명하기를 바랍니다. touch으로는 A 개미 파일을 사용하는 것보다 다른 방법이없는 내가 두려워)

,

+0

성취하고자하는 것을 조금 더 자세하게 설명 할 수 있습니까? – khmarbaise

답변

0

을 자신의 받는다는 플러그인을 작성하고 지역 사회에 기여하지만, 아마도 약간의 잔인한 수 .

나는 메이븐 빌드를 건드리지 않을 것이며, 이전과 같이 단지를 만들도록 할 것이다.

내가 한 것은 jar 파일을 비교하기 위해 내 빌드에서 스크립트를 구현 한 것입니다. 이 스크립트의 논리는 간단하다

  • 점검 인수 (항아리가 존재) (고유 이름) 임시 폴더에
  • 추출 항아리
  • 는 두 폴더에 DIFF를 실행
  • 정리
  • 관련 종료 코드로 종료하십시오 (동일하면 0, 다를 경우 1).

희망이 있습니다.

1

음, 가장 좋은 해결책은 깊은 항아리에 봐 가지고 갈은 diff를 계산하여 도구를 적용하는 것입니다 작업을 사용하여 파일 날짜를 다시 설정하십시오. 파일 날짜를 설정하는 기존 플러그인이 없습니다.

또한 난 그냥하기로 결정 무엇을 공유 할

HIH ... M.

+0

실제로 이것을 시도했지만 MANIFEST가 클래스를 "건 드리면 (touched)"보이기 때문에 항아리에는 여전히 다른 바이너리 데이터가 찍혀 있습니다 ... MANIFEST의 타임 스탬프를 제어하는 ​​방법이 있습니까? –

관련 문제