如何使用mini jar-maven-plugin指定清单中的主类?

时间:2010-08-01 06:02:04

标签: java maven-2 jar manifest

我正在使用minijar-maven-plugin来减小jar-with-dependencies jar的大小,但我需要指定一个mainClass,就像我可以使用maven程序集插件轻松完成。如何在仍然使用minijar插件时指定清单中的mainClass?

我的minijar配置是默认配置:

    <plugin>
        <artifactId>minijar-maven-plugin</artifactId>
        <groupId>org.codehaus.mojo</groupId>
        <executions>
            <execution>
                <phase>package</phase>
                <goals>
                    <goal>ueberjar</goal>
                </goals>
                <configuration>
                    <includeArtifact>true</includeArtifact>
                    <stripUnusedClasses>false</stripUnusedClasses>
                    <includeDependencies>
                        <param>org.vafer:dependency</param>
                    </includeDependencies>
                    <includeDependenciesInRelocation>
                        <param>org.vafer:dependency</param>
                    </includeDependenciesInRelocation>
                </configuration>
            </execution>
        </executions>
    </plugin>

我可以使用:

在maven程序集插件中指定主类
    <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
            <archive>
                <manifest>
                    <mainClass>com.chheng.Main</mainClass>
                </manifest>
            </archive>
            <descriptorRefs>
                <descriptorRef>jar-with-dependencies</descriptorRef>
            </descriptorRefs>
        </configuration>
    </plugin>

2 个答案:

答案 0 :(得分:3)

你应该试试maven shade插件。它更好地处理元数据,并且还负责依赖内联。

我已经弃用了minijar插件而不是added support用于相同的优化到maven shade插件。

观看/投票this issue以使其得到应用。

答案 1 :(得分:0)

已请求此信息 - 请参阅此executable uberjar主题和MOJO-852 - 但仍不支持。鉴于此问题现已开放超过3年,我不希望快速解决(除非您提交补丁)。


我不太了解minijar插件,我实际上从未使用过它......但是如果你配置jar插件来生成一个带有主jar的main-class条目的清单会怎么样?

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
  <configuration>
    <archive>
      <manifest>
        <!--addClasspath>true</addClasspath-->
        <mainClass>my.main.Class</mainClass>
        </manifest>
    </archive>
  </configuration>
</plugin>