2016-09-08 7 views
1

私はspring-boot-maven-pluginを入手して、2つの異なるメインクラスの再パッケージ化された2つのjarをビルドしようとしています。構成ブロックでの具体的なmainClassパラメータで2つの実行ブロックをI'addedが、構成ブロックは、実行ブロックの内部ではなく、プラグインレベルで、私はいつもSpring Bootで2つの再パッケージ化されたjarをビルドするには

Execution default of goal org.springframework.boot:spring-boot-maven-plugin:1.3.0.RELEASE:repackage failed: Unable to find a single main class from the following candidates [com.mystuff.tools.b4commandline.Application, com.mystuff.tools.loadtester.Application] 

を取得するためのプラグインはそれを尊重していないようですここにpomのプラグインのmaven-spring-boot-mavenのプラグインセクションがあります。

<plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
      <executions> 
       <execution> 
        <id>${artifactId}</id> 
        <goals> 
         <goal>repackage</goal> 
        </goals> 
        <configuration> 
         <mainClass>com.mystuff.tools.loadtester.Application</mainClass> 
         <finalName>${artifactId}</finalName> 
        </configuration> 
       </execution> 
       <execution> 
        <id>b4-commandline</id> 
        <goals> 
         <goal>repackage</goal> 
        </goals> 
        <configuration> 
         <mainClass>com.mystuff.tools.b4commandline.Application</mainClass> 
         <finalName>b4-commandline</finalName> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

この上の任意のヘルプは素晴らしいことです。 maven-pluginのstackoverflowでレシピを見ましたが、それらはspring-bootには当てはまりません。

答えて

1

あなたが求めていることは、マニフェストのmain-class属性を除き、2つのjarファイルが同一であることを意味します。 私はむしろ、単一のjarファイルをパッケージ化し、それをを起動するには、スプリングプロファイルを使用することができ示唆している:これは、あなたが2 application-${profile}.propertiesを定義することができ、かつ@Conditional設定クラスは、すべてのプロファイル名に基づいて

$ java -jar -Dspring.profiles.active=profile1 YourApp.jar 
$ java -jar -Dspring.profiles.active=profile2 YourApp.jar 

0

私はそれは、単一のビルド内の両方を動作させることができませんでした(私はそれが可能ではないとは言わないよ)しかし、一つの選択肢は、2 Mavenを定義することですプロファイル:

その後
<profiles> 
    <profile> 
     <id>one</id> 
     <activation> 
      <property> 
       <name>one</name> 
      </property> 
     </activation> 

     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.springframework.boot</groupId> 
        <artifactId>spring-boot-maven-plugin</artifactId> 
        <executions> 
         <execution> 
          <id>default</id> 
          <goals> 
           <goal>repackage</goal> 
          </goals> 
          <configuration> 
           <mainClass>com.xyz.LauncherOne</mainClass> 
           <finalName>one</finalName> 
          </configuration> 
         </execution> 
        </executions> 
       </plugin> 
      </plugins> 
     </build> 

    </profile> 

    <profile> 
     <id>two</id> 
     <activation> 
      <property> 
       <name>two</name> 
      </property> 
     </activation> 

     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.springframework.boot</groupId> 
        <artifactId>spring-boot-maven-plugin</artifactId> 
        <executions> 
         <execution> 
          <id>default</id> 
          <goals> 
           <goal>repackage</goal> 
          </goals> 
          <configuration> 
           <mainClass>com.xyz.LauncherTwo</mainClass> 
           <finalName>two</finalName> 
          </configuration> 
         </execution> 
        </executions> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
</profiles> 

それは二回、両方のプロファイルを使用して(私のコードサンプル内のプロパティで活性化)ビルド:

$ mvn -Done clean install 
$ mvn -Dtwo clean install 

それは作成されます。one.jartwo.jar

関連する問題