2017-08-22 10 views
2

Maven-shade-pluginにPOMファイルのアプリケーションバージョンをマニフェストファイルに含める方法を理解できません。 Iはplugis構成セクション(http://blog.soebes.de/blog/2014/01/02/version-information-into-your-appas-with-maven/)内maven-shade-pluginマニフェストへのアプリケーションバージョンを追加

<archive>     
    <manifest> 
     <addDefaultImplementationEntries>true</addDefaultImplementationEntries> 
     <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries> 
    </manifest> 
</archive> 

含む示唆するのmaven-ジャープラグインのいくつかの例を発見しました。私はmaven-shade-pluginのためにこれを試しましたが、うまくいきません。 org.apache.maven.plugins.shade.resource.ManifestResourceTransformerがこれを行うことができる場合はいくつかの情報を見つけようとしましたが、ドキュメントで何も見つかりませんでした。

これを行う方法を誰かが知っていますか?

ありがとうございます!

答えて

2

マニフェストファイルにエントリを追加することについてちょうどofficial instruction pageに記載されているように、マニフェストファイルのエントリであるため、実装と仕様のバージョンとタイトルをサポートすることもできます。

Apache Maven ArchiverはMaven Shade Pluginではサポートされていませんので、<archive>要素はここでは機能しません。あなたはMavenのシェードのプラグインが提供するManifestResourceTransformerを、使用する必要があります。

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-shade-plugin</artifactId> 
    <version>2.4.3</version> 
    <executions> 
     <execution> 
      <phase>package</phase> 
      <goals> 
       <goal>shade</goal> 
      </goals> 
      <configuration> 
       <transformers> 
        <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> 
         <resource>META-INF/spring.handlers</resource> 
        </transformer> 
        <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> 
         <resource>META-INF/spring.schemas</resource> 
        </transformer> 
        <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> 
         <resource>META-INF/spring.tooling</resource> 
        </transformer> 
        <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 
         <manifestEntries> 
          <Main-Class>${project.build.mainClass}</Main-Class> 
          <Specification-Title>${project.artifactId}</Specification-Title> 
          <Specification-Version>${project.version}</Specification-Version> 
          <Implementation-Title>${project.artifactId}</Implementation-Title> 
          <Implementation-Version>${project.version}</Implementation-Version> 
          <Implementation-Vendor-Id>${project.groupId}</Implementation-Vendor-Id> 
         </manifestEntries> 
        </transformer> 
       </transformers> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

この構成はまた、私が直接JavaでApplication.class.getPackage().getImplementationVersion()を経由して、バージョン番号を取得することができる午前私のプロジェクトで使用されています。

+0

これらすべてのエントリに関する文書はどこにありますか? [documentation](https://maven.apache.org/plugins/maven-shade-plugin/examples/resource-transformers.html#ManifestResourceTransformer)に表示される唯一のものは、 ''、 '」、「」を参照してください。 –

+0

私自身の質問に答えるために、あなたが望むものを追加することができるので、ドキュメントにはありません。 –

関連する問題