2012-07-03 8 views

Odpowiedz

50

Można tego uniknąć, ustawiając wartość createDependencyReducedPom na wartość false.

np.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-shade-plugin</artifactId> 
    <version>${maven-shade-plugin.version}</version> 
    <configuration> 
     <createDependencyReducedPom>false</createDependencyReducedPom> 
    </configuration> 
    .... 
    .... 
</plugin> 

Zobacz more detail from apache

enter image description here

+11

Jeśli to wyłączysz, to co zbudujesz, nadal będzie zawierać zależności zależne. – bmargulies

7

Zobacz https://issues.apache.org/jira/browse/MSHADE-121, a także https://issues.apache.org/jira/browse/MSHADE-124.

Istnieje możliwość przeniesienia d-r-p w inne miejsce, ale mogą nie spodobać się konsekwencje.

Mylisz się co do cieniowanego słoika, zawsze kończy się on celem/chyba, że ​​przeniesiesz go gdzie indziej.

+1

czy możesz wyjaśnić, co powinniśmy zrobić z tym generowanym pom? – Cristiano

+1

Nic. Dodaj go do swojego pliku .gitignore lub ustaw svn: ignore na nim. Maven sprawia, że ​​może go umieścić w zacienionym słoiku. – bmargulies

+2

Co masz na myśli przez "Nie podoba ci się konsekwencje"? Jakie są negatywne konsekwencje? – Gili

1

dokumentację http://maven.apache.org/plugins/maven-shade-plugin/shade-mojo.html jest niepoprawna, gdy mówi:

createDependencyReducedPom logiczna - Flag czy wygenerować uproszczoną POM dla zacienionym artefaktu. Jeśli ustawione na wartość true, zależności , które zostały uwzględnione w pliku JAR, zostaną usunięte z sekcji generowanego POM w sekcji . Zredukowany POM będzie o nazwie dependency-reduced-pom.xml i będzie przechowywany w tym samym katalogu jako cieniowany artefakt. Jeśli nie określisz również dependencyReducedPomLocation, wtyczka utworzy tymczasowy plik o nazwie dependency-reduced-pom.xml w projekcie basedir. Wartość domyślna jest: prawdziwa.

zależność zmniejszonej-pom.xml jest nie przechowywane w tym samym katalogu co zacienionym artefaktu (katalog docelowy) ... to jest w rzeczywistości wygenerowanej w katalogu głównym, a nie kierować

+4

piszą (nawet w twojej odpowiedzi): "wtyczka utworzy tymczasowy plik o nazwie dependency-reduced-pom.xml w projekcie basedir" – OhadR

19

Na podstawie bmargulies 'odpowiedź i jego komentarz na Xv. Odpowiedź, postanowiłem skonfigurować POM zmniejszony zależność do wyjścia do target/, który jest już ignorowany w moim VCS.

Aby to zrobić, po prostu dodaje element dependencyReducedPomLocation do elementu configuration wtyczki, tj

<configuration> 
    <dependencyReducedPomLocation>${project.build.directory}/dependency-reduced-pom.xml</dependencyReducedPomLocation> 
    (...) 
</configuration> 
+2

Bevare tego, z dokumentacji wtyczki "Gdzie umieścić zależność zmniejszoną pom. Uwaga: ustawienie wartości dla tego parametru w katalogu innym niż $ {basedir} spowoduje zmianę wartości $ {basedir} dla wszystkich wykonań wykonanych po wykonaniu cienia.Jest to często nie jest to, czego potrzebujesz. otwarty problem z tą wtyczką. " –

3

Można użyć starą wersję wtyczki. Wersja 1.7 wtyczki maven-shade-plugin do/cel.

Od wersji 1.7.1, pom.xml o zmniejszonej zależności jest zapisywany do basedir. Zobacz numer MSHADE-124 z kilku powodów, dlaczego tak się stało i jakie są tego konsekwencje.Jeśli spróbujesz ustawić dependencyReducedPomLocation, prawdopodobnie napotkasz problemy podczas generowania strony - otwórz numer MSHADE-145.