2017-02-01 11 views
3

私はmaven-jar-pluginを使ってjarを構築し、maven-assembly-pluginを使用してlib/ディレクトリのJARの隣にすべての依存関係を置きます。Maven jarプラグイン - SNAPSHOT依存関係の間違ったクラスパスエントリ

このプロジェクトでスナップショットの依存関係を使用すると、Class-Pathエントリポイントはその依存関係の別のJARを実際にパッケージ化します。ここで

は一例です:

<dependency> 
    <groupId>x.y.z</groupId> 
    <artifactId>artifact</artifactId> 
    <version>1.0-SNAPSHOT</version> 
</dependency> 

JARlib direcotyrインティその依存関係のためにパッケージ化されたメインJAR秒で artifact-1.0-SNAPSHOTしかしClass-Pathエントリはマニフェストはここに起こって、その理由は何lib/artifact-1.0-20170201.104414-8.jar

ですか?

ありがとうございます。

マイassembly.xml

<dependencySets> 
    <dependencySet> 
     <useProjectArtifact>false</useProjectArtifact> 
     <useTransitiveDependencies>true</useTransitiveDependencies> 
     <outputDirectory>lib</outputDirectory> 
     <unpack>false</unpack> 
    </dependencySet> 
</dependencySets> 

プラグイン:

<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <version>2.2.2</version> 
     <executions> 
      <execution> 
       <id>assembly</id> 
       <phase>package</phase> 
       <goals> 
        <goal>attached</goal> 
       </goals> 
       <configuration> 
        <outputDirectory>${project.build.directory}</outputDirectory> 
        <finalName>${dist.name}</finalName> 
        <appendAssemblyId>false</appendAssemblyId> 
        <descriptor>${basedir}/assembly.xml</descriptor> 
       </configuration> 
      </execution> 
     </executions> 
    </plugin> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-jar-plugin</artifactId> 
     <version>2.3.1</version> 
     <configuration> 
      <archive> 
       <manifest> 
        <addClasspath>true</addClasspath> 
        <classpathPrefix>lib/</classpathPrefix> 
       </manifest> 
       <manifestEntries> 
        <Class-Path>.</Class-Path> 
       </manifestEntries> 
      </archive> 
      <outputDirectory>${dist.dir}</outputDirectory> 
     </configuration> 
     <executions> 
      <execution> 
       <goals> 
        <goal>test-jar</goal> 
       </goals> 
      </execution> 
     </executions> 
    </plugin> 

答えて

5

あなたは、最新の3.0.2のように、現在未解決である、MJAR-156に見舞われてきました。コアの問題は、下流のMaven Archiverライブラリであり、おそらくMSHARED-169です。

スナップショットの一意のバージョンを作成しないようにMaven Archiverを指定すると、非常に簡単に回避できます。これは、マニフェスト設定のパラメータuseUniqueVersionsによって制御されます。デフォルトはtrueです。そのように、あなたが瓶のプラグインの設定を変更することができます。jarプラグインのバージョン2.3.1がかなり古いこと

<plugin> 
    <artifactId>maven-jar-plugin</artifactId> 
    <version>3.0.2</version> 
    <configuration> 
    <archive> 
     <manifest> 
     <addClasspath>true</addClasspath> 
     <classpathPrefix>lib/</classpathPrefix> 
     <useUniqueVersions>false</useUniqueVersions> 
     </manifest> 
     <!-- rest of configuration --> 
    </archive> 
    <outputDirectory>${dist.dir}</outputDirectory> 
    </configuration> 
    <!-- the executions --> 
</plugin> 

ノートには、最新の3.0.2へのアップデートを検討してください。

関連する問題