如何使用Eclipse / Maven从一个模块创建多个可执行JAR?

时间:2016-03-15 18:42:00

标签: java eclipse maven jar

我们使用Maven构建Eclipse Java模块。模块中的几个类具有主要功能,我们希望为每个类创建一个可执行的JAR文件。这可能吗?如果是这样的话?

1 个答案:

答案 0 :(得分:2)

是的,这是可能的。您只需要定义您用于制作可执行JAR的插件的多个执行。

一种好方法是使用maven-shade-plugin制作executable jar。所有常见配置都放在与执行无关的部分中,在这种情况下,只是指定将着色的JAR附加到构建。然后每次执行只定义要使用的主类和生成的Maven工件的分类器。

在以下示例配置中,创建了2个可执行JAR,第一个以Class1为主类,第二个以Class2为主类。

<plugin>
  <artifactId>maven-shade-plugin</artifactId>
  <version>2.4.3</version>
  <executions>
    <execution>
      <id>class1</id>
      <phase>package</phase>
      <goals>
        <goal>shade</goal>
      </goals>
      <configuration>
        <transformers>
          <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
            <mainClass>my.main.Class1</mainClass>
          </transformer>
        </transformers>
        <shadedClassifierName>class1</shadedClassifierName>
      </configuration>
    </execution>
    <execution>
      <id>class2</id>
      <phase>package</phase>
      <goals>
        <goal>shade</goal>
      </goals>
      <configuration>
        <transformers>
          <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
            <mainClass>my.main.Class2</mainClass>
          </transformer>
        </transformers>
        <shadedClassifierName>class2</shadedClassifierName>
      </configuration>
    </execution>
  </executions>
  <configuration>
    <shadedArtifactAttached>true</shadedArtifactAttached>
    <createDependencyReducedPom>false</createDependencyReducedPom>
  </configuration>
</plugin>