2009-06-23 6 views
8

Gibt es eine Option in Maven (2.0.9), um die JAR-Komprimierung für den gesamten Vorgang zu deaktivieren? Ich verwende Maven sowohl im Build-Server als auch in meinem Arbeitsplatz und möchte die JAR-Komprimierung für die Workstation-Builds deaktivieren (nur Entwicklung). Ich möchte jedoch nicht alle Poms anfassen und für beide jeweils zwei Versionen erstellen.So deaktivieren Sie die JAR-Komprimierung in Maven

Gibt es eine Option zum Deaktivieren der JAR-Komprimierung durch Umgebungsvariable, Datei oder durch Berühren einer einzelnen pom.xml?

Antwort

1

Nun, Sie könnten verschiedene JAR-Plugin nach Profil definieren. Wäre das akzeptabel?

+0

wie? Kann es in der obersten Ebene pom.xml getan werden? –

+0

@Ran Biron: Ich bin mir nicht ganz sicher, aber wie Sie vielleicht wissen, können Sie Plugins pro Profil neu definieren. Ich habe zu wenig auf Multi-Level-POM-Projekten gearbeitet, um getestet zu haben, ob Profilauswahl an Kinderpoms weitergegeben wird, aber ich kann mir sehr gut vorstellen, dass es so sein kann. Ich würde es selbst testen, aber es ist Zeit, das Büro zu verlassen =) – mikek

+0

siehe meine eigene Antwort für Details. Vielen Dank. –

15

Offenbar ist es möglich, durch die Definition dieses:

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

in der obersten Ebene pom.xml. Als Randnotiz - das hat mein anfängliches Problem des Builds nicht wirklich gelöst.

+0

hat das den Vorteil, mit Kriegs- und Ohrdateien zu arbeiten? – sal

+0

keine Ahnung - versuchen Sie es uns :) –

+0

Warum haben Sie die andere Antwort akzeptiert. Dein ist besser;) –

10

Fügen Sie dem Abschnitt build.plugins in der Datei pom.xml Ihres Projekts Folgendes hinzu.

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

Dadurch wird die JAR-Dateikomprimierung für Ihr Maven-Projekt deaktiviert.

+0

Wie schaltest du es nur für ein Artefakt aus? Sagen Sie eine Schlüsseldatei oder etwas, das, wenn komprimiert gespeichert wird, nicht funktioniert ... – ggb667

1

schließlich fand ich die Antwort zu diesem Thema (wiederum aus dem Glas Kompression), direkt in die pom konfiguriert, auch ich andere zwei interessante Details gefunden: ein verschiedene jar Namen setzen und enthalten ein "Manifest" Definition. Hier ist mein Pom-Fragment.

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