maven-jar-plugin과 maven-dependency-plugin을 사용하여 내 애플리케이션의 실행 가능한 "번들"을 생성하려고합니다. 대부분의 경우에 잘 작동하지만 종속성 계층 구조에서 스냅 샷을 만들 때 복사 의존성 목표는 스냅 샷 종속성을 잠긴 스냅 샷 (타임 스탬프가있는 스냅 샷)으로 변환하는 것처럼 보입니다Maven 아카이버는 클래스 패스에서 잠금 해제 된 스냅 샷을 사용하지만, 복사 의존성은 잠긴 스냅 샷을 복사합니다.
그러나 archiver-plugin에서 addClasspath는 스냅 샷 종속성 번역하지 : lib 디렉토리에
- 을
- 클래스 패스는 lib 디렉토리/foolib-1.0.1-SNAPSHOT.jar
을 포함 foolib-1.0.1-20130108.143522-8.jar있다 그래서 응용 프로그램을 실행할 수 없습니다.
SNAPSHOT을 번역하지 않거나 archiver-plugin에 SNAPSHOT을 번역하지 말 것을 복사 종속성에 지시하는 방법을 찾을 수 없습니다.
이<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.5.1</version>
<executions>
<execution>
<id>copy-libs</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<excludeScope>provided</excludeScope>
<outputDirectory>${package.dest}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<outputDirectory>${package.dest}</outputDirectory>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>${main.class}</mainClass>
</manifest>
</archive>
</configuration>
</plugin>