2012-07-03 10 views

risposta

50

È possibile evitare di averlo creato impostando createDependencyReducedPom su falso.

ad es.

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

Vedi more detail from apache

enter image description here

+11

Se lo si spegne, la cosa creata avrà ancora tutte le dipendenze incorporate elencate come dipendenze. – bmargulies

7

Vedere https://issues.apache.org/jira/browse/MSHADE-121 e anche https://issues.apache.org/jira/browse/MSHADE-124.

C'è un'opzione per spostare il d-r-p altrove, ma potrebbe non piacervi le conseguenze.

Ti sbagli sul barattolo ombreggiato, finisce sempre nella destinazione/a meno che non lo sposti altrove.

+1

potresti spiegare cosa dovremmo fare con questo pom generato? – Cristiano

+1

Niente. Aggiungilo al tuo file .gitignore o imposta svn: ignora su di esso. Maven fa in modo che possa includerlo nel barattolo ombreggiato. – bmargulies

+2

Cosa intendi per "Le conseguenze potrebbero non piacerti"? Quali sono le conseguenze negative? – Gili

1

la documentazione sul http://maven.apache.org/plugins/maven-shade-plugin/shade-mojo.html non è corretta quando dice:

createDependencyReducedPom booleano - Bandiera se generare un POM semplificato per l'artefatto ombreggiato. Se impostato su true, le dipendenze che sono state incluse nel JAR uber verranno rimosse dalla sezione del POM generato. Il POM ridotto sarà denominato dependency-reduced-pom.xml ed è memorizzato nella stessa directory come artefatto ombreggiato. A meno che non si specifica anche dependencyReducedPomLocation, il plugin creerà un file temporaneo denominato dependency-reduced-pom.xml nel progetto baseir. Il valore predefinito è: vero.

la dipendenza-ridotto pom.xml è non memorizzato nella stessa directory del manufatto ombreggiata (directory di destinazione) ... è infatti generato nella directory di base, non bersaglio

+4

scrivono (anche nella tua risposta puoi vedere): "il plugin creerà un file temporaneo chiamato dependency-reduced-pom.xml nel progetto basedir" – OhadR

19

Basato su bmargulies 'risposta e il suo commento su Xv. Risposta di, ho deciso di configurare il POM con riduzione delle dipendenze da inviare a target/, che è già stato ignorato nel mio VCS.

Per fare questo, ho solo aggiunto l'elemento dependencyReducedPomLocation all'elemento configuration del plugin, vale a dire

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

Bevare di questo, dalla documentazione del plugin "Dove mettere la dipendenza ridotta pom: Nota: l'impostazione di un valore per questo parametro con una directory diversa da $ {basedir} cambierà il valore di $ {basedir} per tutte le esecuzioni che si verificano dopo l'esecuzione della sfumatura. Spesso questo non è ciò che desideri. problema aperto con questo plugin. " –

3

è possibile utilizzare una vecchia versione del plugin. La versione 1.7 del maven-shade-plugin scrive su/target.

Dalla versione 1.7.1, pom.xml con riduzione delle dipendenze viene scritto su basedir. Vedi il numero MSHADE-124 per alcuni motivi per cui è stato fatto e quali sono le conseguenze.Se si prova a impostare dependencyReducedPomLocation, è probabile che si verifichino problemi nella generazione del sito - problema aperto MSHADE-145.