2009-08-25 15 views
15

Używam wtyczki zespołu do tworzenia kilku słoików z niektórymi klasami w nim. Muszę nazwy niestandardowe wynikających słoikach: app_business.jarapp_gui.jarcore.jar itpMaven-assembly-plugin: niestandardowe nazwy plików jar

Obecnie mam do następującej konfiguracji:

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <configuration> 
     <appendAssemblyId>false</appendAssemblyId> 
    <finalName>app_business</finalName> 
     <descriptors> 
      <descriptor>assembly.xml</descriptor> 
     </descriptors> 
     <attach>true</attach> 
    </configuration> 
    <executions> 
     <execution> 
      <id>make-assembly</id> 
      <phase>package</phase> 
      <goals> 
       <goal>single</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

plik assembly.xml :

<assembly> 
     <id>app_business</id> 
     <formats> 
     <format>jar</format> 
     </formats> 
     <baseDirectory>target</baseDirectory> 
     <includeBaseDirectory>false</includeBaseDirectory> 

     <fileSets> 
     <fileSet> 
      <directory>${project.build.outputDirectory}</directory> 
      <outputDirectory></outputDirectory> 
      <includes> 
      <include>org/xyz/**</include> 
      </includes> 
     </fileSet>  
     </fileSets> 
    </assembly> 

ten tworzy plik app_business.jar który jest idealny . Ale nie mam pojęcia, jak utworzyć inne moje pliki. Opcja appendAssemblyId nie pomaga mi, ponieważ tworzy nazwy plików w formacie AppName-app_business.jar. Naprawdę potrzebuję dokładnej nazwy pliku app_business.jar.

Każdy pomysł? Dziękuję Ci bardzo!

Odpowiedz

-1

Standardowe wtyczki maven przeznaczone są do ogólnych, powtarzalnych czynności. Gromadzą wszystkie informacje z POM i są sprytni (w tym sensie, że nie musisz dużo konfigurować).

Jeśli potrzebujesz specjalnych zadań, sugeruję użyć ant plugin, który pozwala na osadzenie fragmentu kodu Ant w POM. To pozwala na uruchomienie jar task.

+0

Nie lubię mieszać zadań mrówek i mavenów. W każdym razie używanie zadań ant wymaga znacznie mniejszej konfiguracji xml. (około 20 linii w mojej pracy) – Synox

+3

@Synox, nie powinieneś unikać wtyczki antrun, bardzo przydatne jest wypełnienie luk w Maven bez potrzeby rozwijania własnej wtyczki. Po prostu stwierdzam, że ludzie są zbyt wrażliwi, by z nich korzystać, gdy istnieje więcej sposobów, aby to zrobić Mavenic (? Any, the Maven equivalent of Pythonic). W tym przypadku myślę, że plugin montażowy * powinien * być lepiej dopasowany, ale jak widać z mojej odpowiedzi, wydaje się, że nadal istnieje kilka problemów, które powodują, że działa on dokładnie tak, jak chce tego OP. –

+0

Łatwo jest wyrzucać wtyczkę maven za pomocą mrówek. –

38

Możesz przenieść element konfiguracji poniżej elementu wykonawczego deklaracji wtyczki. Oznacza to, że konfiguracja zostanie zastosowana tylko do tego wykonania. Następnie możesz dodać dodatkowe wykonania wtyczki zespołu dla innych złożeń.

Oto przykład zmodyfikowanej konfiguracji dwóch wykonaniach, każde odniesienie innym zgrupowaniem:

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <executions> 
    <execution> 
     <id>make-business-assembly</id> 
     <phase>package</phase> 
     <goals> 
     <goal>single</goal> 
     </goals> 
     <configuration> 
     <appendAssemblyId>false</appendAssemblyId> 
     <finalName>app_business</finalName> 
     <descriptors> 
      <descriptor>src/main/assembly/business-assembly.xml</descriptor> 
     </descriptors> 
     <attach>true</attach> 
     </configuration> 
    </execution> 
    <execution> 
     <id>make-gui-assembly</id> 
     <phase>package</phase> 
     <goals> 
     <goal>single</goal> 
     </goals> 
     <configuration> 
     <appendAssemblyId>false</appendAssemblyId> 
     <finalName>app_gui</finalName> 
     <descriptors> 
      <descriptor>src/main/assembly/gui-assembly.xml</descriptor> 
     </descriptors> 
     <attach>true</attach> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 

W tej konfiguracji dwa dodatkowe słoiki (app _business.jar i aplikacja _gui.jar) zostaną utworzone w katalogu docelowym, ale pamiętaj, że jeśli zainstalujesz projekt, tylko ostatni zmontowany artefakt zostanie zainstalowany (może to być oczywiście problem). Aby uniknąć tego, należy zmienić właściwości appendAssemblyId na true. Najbliżej można w tym przypadku zmienić nazwy końcowe na "aplikacje" i identyfikatory na "gui" i "biznes", co powoduje, że pakiety app-gui.jar i app-business.jar są pakowane i instalowane są wszystkie artefakty.

+0

Hej, dzięki za naprawdę szybką odpowiedź! to działa.jak powiedziałeś, są ostrzeżenia na konsoli, a ostatni artefakt staje się głównym artefaktem. Mogę z tym żyć, ale nie lubię ostrzeżeń na konsoli. Czy istnieje sposób, aby je ukryć (lub skonfigurować konfigurację, aby to zrobić)? – Synox

+0

jakie są ostrzeżenia? Ostatnia część mojej odpowiedzi dotyczy głównego problemu dotyczącego artefaktów, jeśli możesz zmienić znak z podkreślenia na myślniki –

+1

Ostrzeżenia są następujące: [OSTRZEŻENIE] Opcje konfiguracji: "appendAssemblyId" ma wartość "fałsz", a "klasyfikator" jest pominięty . Zamiast dołączać plik zespołu: ... \ app_business.jar, stanie się plikiem artefaktu głównego projektu. UWAGA: Jeśli dla tego projektu podano wiele deskryptorów lub formatów deskryptorów, wartość tego pliku będzie niedeterministyczna! [OSTRZEŻENIE] Zastępowanie istniejącego pliku głównego artefaktu projektu: ... \ app_gui.jar z plikiem zespołu: .... \ app_gui.jar Chciałbym uniknąć konieczności zamiany podkreślenia na hypens. Ale jeśli nie mogę uniknąć ... to rozwiązanie jest całkiem miłe. – Synox

Powiązane problemy