2012-11-14 2 views
3

Maven/Nexus에 아티팩트를 저장해야하지만 풀다운 할 때 마지막에 버전 번호가 없어야합니다.버전 번호가없는 Nexus/Maven 이슈를 저장하십시오.

나를 괴롭히기 전에 오클라호마를 가리 키십시오.

나는 comm.jar (오라클 통신 포트 드라이버)입니다. 내 넥서스 서버에 넣었습니다 & comm-1.0.jar으로 나타납니다. 어려운 곳으로가는 구성 파일을 찾을 수 알고 자신의 이름을 사용하도록 코딩 것

if(streamtokenizer.ttype == -3 
    && (i = streamtokenizer.sval.indexOf("comm.jar")) != -1) 

:하지만 JAR은 다음과 같은 코드가 포함되어 있습니다. 항아리에 서명 했으니 항의 할 수 없어요.

Nexus에 항아리를 저장하는 방법과 내선 번호가없는 방법은 무엇입니까?


이것은 내 질문에 대한 정확한 대답은 아니지만 문제를 해결합니다.

내 jar 파일을 "comm.jar-1.0.2.jar"라고 불렀습니다. 코드가 파일 이름에서 'comm.jar'를 찾았습니다. 이제 찾았습니다! 괜찮습니까? 그래서 퍼지가되고 내부 코드가 indexOf를 찾고 있다는게 행운 인 것 같습니다. 그러나 그것은 작동합니다!

이 점에 대해 많은 사람들에게 감사드립니다.

제프

+3

내 찌푸린 얼굴이 단단히 오라클 지향 고려하십시오. 그건 끔찍한 코딩이야! –

+2

문제는 런타임에 발생하는 것 같습니다. 따라서 응용 프로그램을 배포 할 때까지는 제거 할 필요가 없습니다. 그래서 질문은 어떻게 응용 프로그램을 패키지합니까? 그것은 IMO를 아는 것과 관련이 있습니다. – maba

답변

4

이것은 당신이 접근하는 방법에 대한 생각을 더 수집 완전한 대답하지 않습니다.

Maven이 아티팩트를 해결하고 빌드하는 것을 기쁘게하기 위해 존재하는 버전 번호로 의존성을 선언해야한다고 생각합니다. 그래서, 트릭은 제품이 완성품에 번들되기 전에 가공품의 이름이 변경되었는지 확인하는 것입니다.

목표는 유용 할 수도있는 stripVersion 매개 변수입니다. 나는 당신이 JAR의 이름을 올바르게 바꾸는 데 사용할 수 있다고 생각합니다. 아마도 어셈블리의 일부로서 (depedency가 classpath의 일부인 디렉토리로 옮겨 졌는지 확인하십시오).

그런 계획은 개발 환경을 손상시킬 수 있습니다. 아마도 JAR 파일을 올바른 이름으로 바꿔서 그 문제를 해결할 수 있을까요?

+0

+1; 버전 스트리핑은 번들 타임에 수행되어야합니다. – maba

+0

@maba 개발 환경 파괴를 피하는 데 어떤 생각이 드나요? –

+0

그것은 실제로 유스 케이스에 달려있다. 더 이상의 정보 없이는 말하기가 어렵습니다. '통신.항아리 '는 내가 사용 해본 것이 아무것도 아닙니다. – maba

1

전쟁 프로젝트에서 작동 시키려면 File Name Mapping을 사용하여 버전을 제거 할 수 있습니다.

<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.3</version> 
      <configuration> 
       <outputFileNameMapping>@{artifactId}@[email protected]{extension}@</outputFileNameMapping> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

종속 항아리는 정상적으로 WEB-INF/lib으로 끝나지만 현재 버전이 없습니다.

그러나 귀하의 질문에서 당신의 최종 제품은, 전쟁, 항아리, 우편 무엇인지 이야기하기 어렵다 ...

관련 문제