maven2: esclusa la directory dalla guerra
-
04-10-2019 - |
Domanda
questo per escludere directory intero ($ {} basedir / src / main / webapp / webscripts) dal mio file WAR, ma non è riuscito. Cosa c'è di sbagliato?
questo non funziona:
<configuration>
<webResources>
<resource>
<directory>${basedir}/src/main/webapp/webscripts</directory>
<excludes>
<exclude>**/*.*</exclude>
</excludes>
</resource>
</webResources>
</configuration>
anche questo:
<configuration>
<webResources>
<resource>
<directory>${basedir}/src/main/webapp</directory>
<excludes>
<exclude>**/webscripts</exclude>
</excludes>
</resource>
</webResources>
</configuration>
Qualcuno può aiutarmi?
Soluzione
Entrambe le tue soluzioni non aiuterebbe, come sarebbero aggiungere una risorsa aggiuntiva che viene poi disattivata. La cartella di origine webapp viene copiato per impostazione predefinita, senza il meccanismo delle risorse.
Il meccanismo per disattivare una parte che è attraverso il <warSourceExcludes>
parametro, in questo modo:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1</version>
<configuration>
<warSourceExcludes>webscripts/**</warSourceExcludes>
</configuration>
</plugin>
Altri suggerimenti
warSourceExcludes non sembra aver appena stato rinominato packagingExcludes .
warSourceExcludes : La virgola elenco di token separati da escludere quando si copia il contenuto del warSourceDirectory
.packagingExcludes : La virgola elenco di token separati da escludere dal WAR prima del confezionamento. Questa opzione può essere utilizzato per implementare il magro caso d'uso WAR.
C'è una grande differenza: con packagingExcludes , i gettoni sono completamente esclusi dal file di guerra finale. Con warSourceExcludes , i gettoni vengono semplicemente ignorati quando si copia nella directory di guerra nel file di guerra. Di conseguenza, se i gettoni sono presenti nella webappDirectory , per esempio, non saranno ignorati quando si utilizza warSourceExcludes , ma sarà quando si utilizza packagingExcludes .
E un esempio di sintassi di lavoro:
<warSourceExcludes>**/${project.artifactId}/**</warSourceExcludes>
warSourceExcludes Nella versione 2.1-alfa-1, questo è stato nominato in modo non corretto. Il parametro di destra è packagingExcludes
Esempio di utilizzo (esclude WEB-INF / statica / cartella da WAR):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<warName>searchservice-web</warName>
<packagingExcludes>WEB-INF/statics/</packagingExcludes>
</configuration>
</plugin>
Inorder per rimuovere i file di origine ho usato il seguito di configurazione in Maven
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<packagingExcludes>
eb-app/app/**,eb-app/node_modules/**,eb-app/public/**,eb-app/server/**,eb-app/tests/**,eb-app/tmp/**,eb-app/vendor/**,eb-app/*
</packagingExcludes>
</configuration>
</plugin>
Ha avuto uno scenario in cui ho dovuto escludere le due cartelle che potrebbero essere compensate da *scripts
ed erano nella cartella risorse. Il primo confusione era se fornire il valore escludere come src/main/resources/*scripts
o come WEB-INF/classes/*scripts
, cioè pre o struttura posta compilazione.
è stato molto importante fornire /**
per ottenere l'intera directory viene esclusa dal file di guerra. Nel mio caso, *scripts/**
.
Questa è la configurazione finale, che ha funzionato:
<packagingExcludes>WEB-INF/classes/*scripts/**</packagingExcludes>