2010-08-01 133 views
0

我正在使用minijar-maven-plugin来减少jar-with-dependencies jar的大小,但我需要指定一个mainClass,就像我可以轻松使用maven assembly插件一样。如何在仍然使用minijar插件的情况下在清单中指定mainClass?如何使用minijar-maven-plugin在清单中指定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 Assembly插件使用指定主类:

<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> 

回答

3

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

我已经弃用minijar插件,而不是added support为相同的优化maven阴影插件。

观看/投票this issue以获得应用。

0

这已请求 - 请参阅该executable uberjar线程和MOJO-852 - 但仍然不受支持。考虑到这个问题现在已经开放3年多了,我不会指望快速解决(除非你提交补丁)。


我不知道minijar插件非常好,我从来没有使用过它实际上...但如果你配置的jar插件生成清单与主类条目主罐子发生了什么?

<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> 
+0

感谢您链接mojo票。我为任何可以提交补丁的人创造了奖励。 http://nextsprocket.com/tasks/mojo-852-add-manifest-file-in-minijar-ueberjar – 2010-08-02 07:01:29