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