2009-06-23 10 views
8

Czy istnieje opcja w Maven (2.0.9), aby wyłączyć kompresję słoika dla całej operacji? Używam Mavena zarówno na serwerze budowania, jak i na moim stanowisku pracy i chciałbym wyłączyć kompresję słoika na kompilacjach stacji roboczych (tylko programowanie). Nie chcę jednak dotykać wszystkich poms i tworzyć dla nich dwóch wersji.Jak wyłączyć kompresję słoika w Maven

Czy istnieje opcja wyłączenia kompresji słoika według zmiennej środowiskowej, pliku lub dotykając pojedynczego pom.xml?

Odpowiedz

1

Cóż, możesz zdefiniować inną wtyczkę jar według profilu. Czy to byłoby do przyjęcia?

+0

jak? Czy można to zrobić w pom.xml najwyższego poziomu? –

+0

@Ran Biron: Nie jestem do końca pewien, ale jak być może wiesz, możesz przedefiniować wtyczki na podstawie profilu. W niewielkim stopniu pracowałem nad wielozakresowymi projektami POM, aby przetestować, czy dobór profili jest przekazywany do potomnych pomsów, ale bardzo dobrze mogę sobie wyobrazić, że tak jest. Testowałem sam, ale czas opuścić biuro =) – mikek

+0

zobacz moją własną odpowiedź po szczegóły. Dzięki. –

15

Najwyraźniej jest to możliwe, definiując w ten sposób:

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

w pom.xml najwyższego poziomu. Na marginesie - to naprawdę nie rozwiązało mojego początkowego problemu z budowaniem, zabierającym zbyt dużo czasu.

+0

Czy ma to dodatkową zaletę pracy z plikami wojennymi i dousznymi? – sal

+0

nie mam pojęcia - spróbuj nam powiedzieć :) –

+0

Dlaczego przyjąłeś drugą odpowiedź. Twój jest lepszy;) –

10

Dodaj następujące elementy do sekcji build.plugins w pliku pom.xml projektu.

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

Powoduje wyłączenie kompresji pliku JAR dla projektu maven.

+0

Ale czy wyłączasz go tylko dla jednego artefaktu? Powiedzmy, że plik klucza lub coś, co jeśli zostanie skompresowane, nie będzie działało ... – ggb667

1

wreszcie znalazłem odpowiedzi na ten temat (kolej wyłączyć kompresję słoik), konfiguracji bezpośrednio do POM, również znalazłem dwie inne interesujące szczegóły: Umieszczenie nazwę różnych jar za i zawiera definicję "manifestu". Oto mój fragment 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>