1つのプロジェクトで複数の起動クラス毎の JAR をビルドする

昔、考えが及ばずあまりイケてない方法を書いた。
1プロジェクトで起動可能な2つのJARを作る - Oboe吹きプログラマの黙示録
これでは、2通りのJARしか対応できないので、ダメだ。
static mainメソッドのクラスをプロジェクトで複数持って、
各クラス毎の java -jar {JARファイルパス}で実行するJAR
を作成する方法が望ましい。

Maven コマンド package 実行時に、ーDオプションで対象の Main クラス名と、
対応するJARファイル名称を指定する単純な方法で良いはずだ。

pom.xml

<build>
   <plugins>
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-compiler-plugin</artifactId>
         <configuration>
            <source>17</source>
            <target>17</target>
         </configuration>
      </plugin>
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-shade-plugin</artifactId>
         <version>2.4.1</version>
         <executions>
            <execution>
               <phase>package</phase>
               <goals>
                  <goal>shade</goal>
               </goals>
               <configuration>
                  <finalName>${jarname}</finalName>
                  <transformers>
                     <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                        <mainClass>${mainclass}</mainClass>
                     </transformer>
                  </transformers>
                  <filters>
                     <filter>
                        <artifact>*:*</artifact>
                        <excludes>
                           <exclude>META-INF/*.SF</exclude>
                           <exclude>META-INF/*.DSA</exclude>
                           <exclude>META-INF/*.RSA</exclude>
                        </excludes>
                     </filter>
                  </filters>
               </configuration>
            </execution>
         </executions>
      </plugin>
   </plugins>
</build>
起動クラス名 JARファイル名 
org.simple.SimpleMain1 simple1.jar
org.simple.SimpleMain2 simple2.jar
org.simple.SimpleMain3 simple3.jar

それぞれ、以下のように Maven build を実行すれば良い。
  mvn package -Dmainclass=org.simple.SimpleMain1 -Djarname=simple1
  mvn package -Dmainclass=org.simple.SimpleMain2 -Djarname=simple2
  mvn package -Dmainclass=org.simple.SimpleMain3 -Djarname=simple3

Eclipsse での mvn 実行に設定では、ーDオプションは、以下のように設定すればよい。