2009-06-23 4 views
8

Existe-t-il une option dans Maven (2.0.9) pour désactiver la compression de jar pendant toute l'opération? J'utilise Maven à la fois dans le serveur de construction et dans mon poste de travail et je voudrais désactiver la compression jar sur les builds de poste de travail (développement uniquement). Cependant, je ne veux pas toucher tous les poms et créer deux versions pour chacun.Comment désactiver la compression de jar dans Maven

Existe-t-il une option pour désactiver la compression jar par variable d'environnement, fichier ou en touchant un seul fichier pom.xml?

Répondre

1

Eh bien, vous pouvez définir différents plugin jar par profil. Est-ce que ce serait acceptable?

+0

comment? Peut-il être fait dans le pom.xml de haut niveau? –

+0

@Ran Biron: Je ne suis pas tout à fait sûr, mais comme vous le savez peut-être, vous pouvez redéfinir les plugins par profil. J'ai travaillé peu sur des projets multi-niveaux de POM pour tester si la sélection de profil est transmise aux poms enfants, mais je peux très bien imaginer que cela puisse être le cas. Je voudrais le tester moi-même, mais il est temps de quitter le bureau =) – mikek

+0

voir ma propre réponse pour plus de détails. Merci. –

15

Apparemment, il est possible en définissant ceci:

<profile><id>...</id> 
    <build> 
    <pluginManagement> 
     <plugins> 
      <plugin> 
       <configuration> 
        <archive> 
         <compress>false</compress> 
        </archive> 
       </configuration> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
    </build> 
</profile> 

dans le pom.xml haut niveau. En note de côté - cela n'a pas vraiment résolu mon problème initial de la construction en prenant trop de temps.

+0

est-ce que cela a l'avantage de travailler avec des fichiers war et ear? – sal

+0

aucune idée - essayez et dites-nous :) –

+0

Pourquoi avez-vous accepté l'autre réponse. Le vôtre est meilleur;) –

10

Ajoutez ce qui suit à la section build.plugins du fichier pom.xml de votre projet.

<plugin> 
    <artifactId>maven-jar-plugin</artifactId> 
    <version>2.2</version> 
    <configuration> 
     <archive> 
      <compress>false</compress> 
     </archive> 
    </configuration> 
</plugin> 

Cette option désactive la compression de fichier jar pour votre projet maven.

+0

Comment l'éteignez-vous seulement pour un artefact? Dites un fichier clé ou quelque chose qui, s'il est compressé, ne fonctionnera pas ... – ggb667

1

J'ai finalement trouvé la réponse de ce sujet (tour de la compression du pot), la configuration directement dans le pom, aussi j'ai trouvé deux autres détails intéressants: mettre un nom différent du pot et inclure un "manifeste" définition. Voici mon fragment de pom.

<build> 
    <finalName>***FileName***</finalName> 

    <plugins> 

     <!-- Set a JDK compiler level --> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
      <configuration> 
       <source>${jdk.version}</source> 
       <target>${jdk.version}</target> 
      </configuration> 
     </plugin> 

     <!-- Make this jar executable --> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jar-plugin</artifactId> 
      <configuration> 
       <archive> 
       <manifest> 
        <!-- Jar file entry point --> 
        <mainClass>***package.test.ClassTest***</mainClass> 
       </manifest> 
       <compress>***false***</compress> 
       </archive> 
      </configuration> 
     </plugin> 

    </plugins> 
</build> 
Questions connexes