2009-10-12 8 views
8

Jak usunąć wygenerowane artefakty kompilacji z katalogu docelowego Maven? Maven generuje plik jar lub war do katalogu docelowego. Chciałbym usunąć ten plik po tym, jak maven zainstalował plik jar/war do lokalnego repozytorium (czyli po tym, jak maven wykonał cel "install"). Usunięcie może się zdarzyć w momencie instalacji lub oddzielnego celu, który wykonuję ręcznie.Jak usunąć wygenerowane artefakty kompilacji z katalogu docelowego Maven?

Należy zauważyć, że chciałbym pozostawić nienaruszone inne części katalogu docelowego, na przykład raporty docelowe/witryny i cele/surefire.

+1

Z ciekawości, jaka jest tego przyczyna? –

+0

Widziałem to wcześniej, gdy ktoś chce utworzyć artefakt, taki jak plik exIS NSIS, ale używają tego artefaktu, ponieważ ma wygodny zestaw powiązań cyklu życia lub nie dba o pośredni artefakt (np. plik jar, z którego jest produkowany exe.) –

+0

Zasadniczo używam buildu maven wewnątrz serwera ciągłej integracji i interesują mnie tylko raporty i rzeczy, które zostaną zainstalowane na lokalnym repo. Pozostałe pliki to marnowanie miejsca, a pliki jar są dość duże. –

Odpowiedz

18

Wystarczy użyć czystego wtyczki i uruchomić wykonywanie po fazie zainstalować:

<plugin> 
    <artifactId>maven-clean-plugin</artifactId> 
    <version>2.2</version> 
    <executions> 
     <execution> 
     <id>auto-clean</id> 
     <phase>install</phase> 
     <goals> 
      <goal>clean</goal> 
     </goals> 
     <configuration> 
      <filesets> 
      <fileset> 
       <directory>${project.build.outputDirectory}</directory> 
       <includes> 
       <include>**/*.jar</include> 
       </includes> 
      </fileset> 
      </filesets> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 
+0

+1 dla filtru, ale element katalogu powinien mieć wartość $ {project.build.outputDirectory}, aby można było przesłonić wartości –

+5

Potrzebowałem usunąć tylko konkretny katalog z wyników. Od wersji 2.3 wtyczka usuwa domyślnie cały katalog, chyba że podasz właściwość excludeDefaultDirectories w znaczniku . – Danny

0

Nie ma nic wbudowanego w Mavena, który mógłby to zrobić. Możesz użyć wtyczki antrun do wykonania skryptu Ant po instalacji, który usuwa artefakt, lub użyj wtyczki exec, aby użyć linii poleceń, aby usunąć artefakt, lub zapisz własną wtyczkę.

Sugeruję, że przy wykonywaniu którejkolwiek z tych czynności istnieje niewielka wartość. Maven został zaprojektowany do umieszczania pośrednich i końcowych artefaktów w target, aby uczynić kompilacje następcze bardziej wydajnymi. Powodem, dla którego nie ma już możliwości, aby to zrobić, jest wskaźnik, że jest to mało wartościowe. Jeśli ma dla ciebie wartość, masz kilka opcji.

+1

Cóż, to po prostu nieprawda. Zobacz odpowiedź domi. Powiedziawszy to, wciąż zastanawiam się, dlaczego to zrobić. –

0

Wiem, że jestem trochę późno. Ale wydaje mi się, że problem polegał na tym, że projekt ma automatycznie archiwizować artefakty. W moim przypadku wyłączyłem automatyczną archiwizację i właśnie zarchiwizowałem artefakty ręcznie, korzystając z akcji budowania postów. W ten sposób archiwizowane są tylko te artefakty, które mnie interesują. Jestem gotów opuścić wygenerowane artefakty na dysku, dopóki nie zostanie uruchomiona następna kompilacja.

Powiązane problemy