2010-08-01 14 views
0

J'utilise minijar-maven-plugin pour réduire la taille de mon pot jar-with-dependencies mais j'ai besoin de spécifier une mainClass comme je peux le faire facilement avec le plugin maven assembly. Comment puis-je spécifier la classe principale dans le manifeste tout en utilisant le plugin minijar?Comment puis-je spécifier la classe principale dans le manifeste avec minijar-maven-plugin?

Ma configuration minijar est la valeur par défaut:

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

je peux spécifier la classe principale dans un plug-in de montage Maven en utilisant:

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

Répondre

3

Vous devriez essayer le plugin maven shade. Il traite mieux les métadonnées et s'occupe également de la dépendance.

J'ai déprécié le plugin minijar et à la place added support pour la même optimizatiosn au plugin de nuance maven.

Regardez/votez pour this issue pour l'appliquer.

0

Cela a été demandé - voir ce fil executable uberjar et MOJO-852 - mais n'est toujours pas pris en charge. Et étant donné que ce problème est ouvert depuis plus de 3 ans maintenant, je ne m'attendrais pas à une résolution rapide (sauf si vous soumettez un patch).


Je ne sais pas le minijar plugin très bien, je ne l'utilisais en fait ... mais qu'arrive-t si vous configurez le plug-in pot pour générer un manifeste avec l'entrée principale de la classe pour le pot principal?

<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

Merci d'avoir lié le ticket mojo. J'ai créé une récompense pour tous ceux qui peuvent soumettre un patch pour cela. http://nextsprocket.com/tasks/mojo-852-add-manifest-file-in-minijar-ueberjar –