Pacchetto Maven / installa senza test (salta test)


343

Sto cercando di impacchettare il mio progetto. Ma esegue automaticamente i test precedenti eseguendo l'imballaggio. I test inseriscono del contenuto nel database. Questo non è quello che voglio, ho bisogno di evitare di eseguire test durante il pacchetto dell'applicazione. Qualcuno sa come eseguire il pacchetto senza test?


13
Un test unitario dovrebbe consistere nelle seguenti 4 fasi: inizializzazione, test, verifica e smontaggio. Forse dovresti adattare i tuoi test e aggiungere un secondo smontaggio / cleanup del tuo database o dovresti usare un'istanza di database separata, non impacchettata con il tuo file jar, per eseguire i test.
Marc-Christian Schulze,

Sembra che i tuoi test siano "pesanti", quindi non vuoi eseguirli. Ma è una cattiva pratica. Forse alcuni framework come DBUnit potrebbero aiutarti? Oppure puoi ripristinare le modifiche al database alla fine del test?
Mickael Marrache,

Risposte:


575

Corri Maven con

mvn package -Dmaven.test.skip=true 

1
grazie per la tua risposta immediata, sto correndo da eclipse, dove aggiungo il comando -Dmaven.test.skip = true?
vks,

10
Non ho mai avviato mvn da eclipse, ma nella finestra Esegui configurazione in cui si configurano target e profili di Maven, c'è una casella di controllo "Skip Test". Forse questo farà il trucco.
Giorgos Dimtsas,

9
secondo la documentazione che salterà la compilazione e l'esecuzione. È possibile utilizzare -DskipTest per saltare l'esecuzione. Questo post fornisce anche alcuni avvertimenti su quali versioni è possibile utilizzare ogni flag
JonnyRaa,

1
Grazie mille, lo facevo usando -DskipTestsma non funziona più, hai idea del perché?
sam,

7
Si noti che la documentazione del plug-in Maven Surefire Plugin e Maven Failsafe suggerisce che l'impostazione skipTestsè preferita all'impostazione maven.test.skip.
Filip Bártek,

173

Fornisci semplicemente il comando di seguito indicato che ignorerà l'esecuzione dei casi di test,

mvn package -DskipTests

4
per me questo non funzionerebbe. Invece ho dovuto usare una soluzione accettata
Sebas il

1
-DskipTestsnon ha funzionato per me quando l'ho usatomvn clean install -DskipTests
Vishrant il

1
In parte va bene perché non eseguirà il test MA comilierà le classi di test .....
Antoniossss

Per i follower, -DskipTestsè lo stesso di -Dmaven.test.skip.exec=true stackoverflow.com/a/21933970/32453 e sì, compila i test e non li esegue (mentre -Dmaven.test.skip=truenon li compila)
rogerdpack

47

puoi aggiungere questa configurazione di plugin al tuo pom se non vuoi impostare arg della riga di comando:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <skipTests>true</skipTests>
  </configuration>
</plugin>

3
Con questa configurazione non è più possibile eseguire i test dalla riga di comando.
Emmanuel Bourg,

1
@EmmanuelBourg Che può essere risolto seguendo le istruzioni in questo esempio maven.apache.org/plugins/maven-surefire-plugin/examples/…
smp7d


41

Nota che -Dmaven.test.skip impedisce a Maven di costruire l'artefatto del vaso di prova.

Se desideri saltare i test ma creare artefatti secondo un normale utilizzo di build:

-Dmaven.test.skip.exec

1
Questa era la risposta che stavo cercando, funziona perfettamente. Grazie.
Binita Bharati,

Come diavolo dovrei ricordarmelo? Perché non creare un semplice alias ovvio e memorabile come "skipTest"?
TheRealChx101

33

Se lo stai provando in Windows Powershell, otterrai questo errore:

[ERROR] Unknown lifecycle phase ".test.skip=true". You must specify a valid lifecycle phase or a goal in the format...

La ragione di ciò è che in Powershell il " -" ha un significato speciale e sta causando problemi con Maven.

La soluzione è anteporre un backtick (`), in questo modo ..

mvn `-Dmaven.test.skip=true install 

Riferimento: http://kuniganotas.wordpress.com/2011/08/12/invalid-task-test-skiptrue-you-must-specify-a-valid-lifecycle-phase/


1
Ho avuto lo stesso problema e questo mi ha risolto. Grazie.
dal

26
<properties>
    <maven.test.skip>true</maven.test.skip>
</properties>

è anche un modo per aggiungere file pom


18

È possibile passare il maven.test.skipflag come argomento JVM, per saltare l'esecuzione dei test quando viene eseguita la fase del pacchetto (e quelle precedenti nel ciclo di vita predefinito):

mvn package -Dmaven.test.skip=true

Puoi anche passare il skipTestsflag da solo all'eseguibile mvn. Se si desidera includere queste informazioni nel POM, è possibile creare un nuovo profilo in cui è possibile configurare maven-surefire-pluginper saltare i test .


17

Devi solo fornire

-Dmaven.test.skip

Non è più necessario aggiungere =true.


13

In Inllij IDEA esiste anche un'opzione per saltare l'obiettivo del test.

inserisci qui la descrizione dell'immagine


11

Rispondere a una domanda vecchia e accettata qui. Puoi aggiungerlo nel tuo pom.xml se vuoi evitare di passare continuamente l'argomento della riga di comando:

  <properties>
    <skipTests>true</skipTests>
  </properties>

11

È possibile aggiungere uno -DskipTestso -Dmaven.test.skip=truequalsiasi mvncomando per saltare i test. Nel tuo caso sarebbe come di seguito:

mvn package -DskipTests

O

mvn package -Dmaven.test.skip=true


4

I test dovrebbero sempre [1] essere eseguiti prima del pacchetto. Se devi disattivare i test, stai facendo qualcosa di sbagliato. In altre parole, stai cercando di risolvere il problema sbagliato. Scopri qual è il tuo problema e fai quella domanda. Sembra che sia relativo al database.

[1] Potresti saltare i test quando devi generare rapidamente un artefatto per uso locale e di sviluppo, ma in generale, la creazione di un artefatto dovrebbe sempre seguire un'esecuzione di test riuscita.


Ho un problema simile: le mie applicazioni contengono websocket. Quando eseguo mvn clean install finisco in una serie infinita di test. Prima che lo forzassi a chiuderlo, il processo è andato avanti per 3 ore e i messaggi stampati riguardavano proprio Websocket. Potete per favore controllare il mio problema per vedere cosa sto facendo di sbagliato? stackoverflow.com/questions/54614739/...
georgeB

Le regole hanno sempre delle eccezioni. Se non la pensi così, ti sbagli.
Jay Sullivan,

3

Una notazione abbreviata per eseguire maven build e saltare i test sarebbe:

mvn clean install -DskipTests


2

Per il pacchetto Maven senza infettare il test Maven:

<properties>
    <maven.test.failure.ignore>true</maven.test.failure.ignore>
</properties>

Grazie, ho avuto bisogno esattamente di questo oggi.
Sean McMillan,

1

Ovviamente lo stai facendo nel modo sbagliato. I test sono una parte importante del preimballaggio. Non dovresti ignorarlo o saltarlo, ma piuttosto fallo nel modo giusto. Prova a cambiare il database in cui inserisce i dati (come test_db). Potrebbe volerci un po 'per configurarlo. E per assicurarsi che questo database possa essere utilizzato per sempre, è necessario eliminare tutti i dati entro la fine dei test. JUnit4 ha annotazioni che ti rendono facile. Usa le annotazioni @Before, @After @Test per i metodi giusti. Devi passarci un po 'di tempo, ma ne varrà la pena!


9
Penso che la domanda e la voglia di impacchettare senza eseguire i test siano perfettamente valide. Non credo che l'OP "ovviamente lo stia facendo nel modo sbagliato". Persone e progetti diversi hanno esigenze diverse, e queste di solito non sono in linea con la Bibbia di Maven o le convinzioni di varie persone (come te) su come dovrebbe funzionare lo sviluppo del software. Penso che la tua risposta sarebbe più apprezzata senza il suo approccio condiscendente.
Zero3,

1

In Intellij, vai su Visualizza -> Strumenti di Windows -> scegli Maven Projects. Nel menu a discesa Lifecyle, fai clic con il pulsante destro del mouse sul pacchetto -> scegli Crea 'your-project [pacchetto]' ...

Immettere questo valore: package -Dmaven.test.skip=true -f pom.xmlnel campo Riga di comando. Fai clic su Applica e dovrebbe apparire un menu a discesa Esegui configurazioni insieme al comando personalizzato creato maven.


perché questo è stato downvoted? Lo uso ogni volta che volevo costruire il mio progetto, ma saltando i test
Patrick Tolentino,

0

mvn clean install -Dmaven.test.skip=true

ha funzionato per me poiché -Dskipnon funzionava più.



-1

Il modo migliore e più semplice per farlo, in IntelliJ Idea nella finestra "Progetto Maven", e semplicemente non fare clic sul pulsante di test. Spero di averti aiutato. Buona giornata :)


1
Se fai clic sul pacchetto, esegue i test, che è ciò che OP sta cercando di evitare
Charlie,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.