2016-04-26 32 views
0

基本的には、デフォルトのjarファイル(私の場合は<project.name> + <project.version>.jarのようなもの)に加えて、<project.name>.jarというjarファイルを生成したいとします。注意:この<project.name>.jarは、すべてデフォルトのjarファイルと同じですが、名前です。Bambooデプロイのための正確で完全なマニフェストファイルを持つ追加のjarを生成する方法は?

そして、この追加のjarファイルがどの以下のようなマニフェストファイルは、デフォルトのマニフェストファイルである必要がありますが

しかし、私の中に次のように私は私の中で追加のブロックを追加してい

anifest-Version: 1.0 
Archiver-Version: Plexus Archiver 
Built-By: XXX 
Start-Class: com.XXXX.XXX.Application 
Spring-Boot-Version: 1.3.1.RELEASE 
Created-By: Apache Maven 
Build-Jdk: 1.8.0_74 
Main-Class: org.springframework.boot.loader.JarLauncher 

をjarファイル生成しました私の追加したjarファイルで生成されたマニフェストファイルには、次のようなフィールドはありません:

Start-Class 
Main-Class 
... 

それで展開できませんでした。 要件が奇妙に聞こえるのは分かっていますが、質問は明確です.Mavenに、展開のための正確かつ完全なマニフェストファイルを持つjarファイルを生成させる方法はありますか?

//完全なプラグインの一部

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jar-plugin</artifactId> 
      <executions> 
       <execution> 
        <goals><goal>test-jar</goal></goals> 
       </execution> 
       <execution> 
        <id>copy-jar</id> 
        <phase>package</phase> 
        <goals><goal>jar</goal></goals> 
        <configuration> 
         <finalName>${project.artifactId}</finalName> 
        </configuration> 
       </execution> 
       <execution> 
        <id>dto-jar</id> 
        <goals><goal>jar</goal></goals> 
        <phase>package</phase> 
        <configuration> 
         <finalName>${project.artifactId}-dto</finalName> 
         <includes> 
          <include>**/dto/*</include> 
          <include>**/dto</include> 
          <include>**/exceptions/*</include> 
          <include>**/exceptions</include> 
          <include>**/utils/*</include> 
          <include>**/utils</include> 
         </includes> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
+1

上記のマニフェストエントリは、他の実行セクション内に設定されています。実行セクションの外側にプラグイン設定セクションはありませんか?より明確にするには:jarプラグインセクション全体を共有できますか? –

+0

@ A.DiMatteoねえ、私はジャーのプラグインを追加しました。私はデフォルトのマニフェスト設定を使用していると思います。 – Acton

答えて

0

あなたmaven-jar-pluginセクションに関する:test-jar目標の1、jar目標の

  • 1のための2:

    • 次の3つの実行を持っていますそれらはデフォルトの実行ID(default-jar)を再利用してfinalNameエントリを指定しますが、マニフェスト設定は指定しません。この構成によれば、あなたのマニフェストファイルは空でなければならず、あなたの質問によって提供される記述と一貫していなくてはなりません。
    • 追加のjarゴール実行にはカスタマイズオプション付きの設定がありますが、ここでは間違いはありません。ただし、正しく埋め尽くされたマニフェストファイルを追加することを除いて、(もう一度)設定はありません。

    可能な説明は、あなたのPOMはまたmaven-jar-pluginの構成、または同じのためのさらなる構成を指定するであろう、その上部にparent POMと、pluginManagementセクションを提供することであろう。これをチェック倍増する

    、あなたは

    mvn help:effective-pom -Doutput=eff-pom.xml 
    

    を実行し、生成されたeff-pom.xmlファイルの内容を確認することができます。それは、あなたの場合の真実の単一の源になります。


    マニフェストのエントリを見て:

    それはあなたが正常にすでに設定し春ブート親ポンポンを持つ、 春ブーツプロジェクトに取り組んでいることをかなり明確になり
    Spring-Boot-Version: 1.3.1.RELEASE 
    Main-Class: org.springframework.boot.loader.JarLauncher 
    

    必要なマニフェストファイル。しかし、ファットジャー(依存関係のjarまたはuber jar)を使用し、maven-jar-plugin経由で構築されず、maven-assembly-plugin経由で構築されます。 exampleとして

    <plugin> 
        <artifactId>maven-assembly-plugin</artifactId> 
        <version>2.4</version> 
        <configuration> 
         <descriptors> 
          <descriptor>src/main/assembly/jar-with-dependencies.xml</descriptor> 
         </descriptors> 
         <archive> 
          <manifest> 
           <mainClass>org.springframework.boot.loader.JarLauncher</mainClass> 
          </manifest> 
          <manifestEntries> 
           <Start-Class>org.springframework.boot.load.it.jar.EmbeddedJarStarter</Start-Class> 
          </manifestEntries> 
         </archive> 
        </configuration> 
        <executions> 
         <execution> 
          <id>jar-with-dependencies</id> 
          <phase>package</phase> 
          <goals> 
           <goal>single</goal> 
          </goals> 
         </execution> 
        </executions> 
    </plugin> 
    

    したがって、あなたは、JARプラグイン・ソリューションを見てではなく、同じのため、さらに組み立てプラグインの実行を追加しないでください。

  • +0

    @Actonこの問題は解決しましたか? –

    +0

    私は元のプランをあきらめていますが、メインジャー用の2つのジャー(2つの名前)の代わりに、デフォルトのものをそのまま残しておき、デフォルトで正しいマニフェストファイルを持っています。しかし、あなたの提案はまだ読むのが良いです。ありがとうございました – Acton

    0

    この問題のいくつかの他の側面のちょうど分け前。実際にはpomファイルはデプロイメントビジネスを担当するべきではありません(ただし、将来起こりうる問題ではありますが)。この部分は、bambooデプロイスクリプトで完全に管理する必要があります。それが私のやり方です。

    関連する問題