En quoi «mvn clean install» est-il différent de «mvn install»?

208

Quelle est la difference entre mvn clean installet mvn install?

Leonid
la source

Réponses:

214

cleanest sa propre phase de cycle de vie de construction (qui peut être considérée comme une action ou une tâche) dans Maven. mvn clean installindique à Maven d'effectuer la cleanphase dans chaque module avant d'exécuter la installphase pour chaque module.

Cela efface tous les fichiers compilés que vous avez, en vous assurant que vous compilez vraiment chaque module à partir de zéro.

Powerlord
la source
13
J'ai toujours pensé que l'installation, y compris le nettoyage, était l'une de ses phases ... jusqu'à ce que je vois cela
Junchen Liu
14
@shanyangqu Malheureusement, non. cleanest dans un cycle de vie séparé , il n'est donc pas appelé par défaut.
Powerlord
47

Maven vous permet de spécifier des objectifs ou des phases de cycle de vie sur la ligne de commande (ou les deux).

cleanet installsont deux phases de cycle de vie différentes , auxquelles différentes exécutions de plug-in sont liées (par défaut ou explicitement dans votre pom.xml )

La cleanphase, par convention, est destinée à rendre une version reproductible, c'est-à-dire qu'elle nettoie tout ce qui a été créé par les versions précédentes. Dans la plupart des cas, il le fait en appelant clean:clean, ce qui supprime le répertoire lié à ${project.build.directory}(généralement appelé "cible")

Sean Patrick Floyd
la source
6
"installer" n'est pas un cycle de vie. C'est une phase du cycle de vie par défaut. Bien qu'il existe un cycle de vie "propre", AFAIK, ce paramètre spécifie la phase "propre" du cycle de vie "propre", et non le cycle de vie "propre" lui-même.
Puce
1
@Puce true, je voulais dire "Phase", pas le cycle de vie
Sean Patrick Floyd
38

Vous pouvez appeler plus d'un objectif cible avec maven. mvn clean installappelle d' cleanabord, puis install. Vous devez nettoyer manuellement, car le nettoyage n'est pas un objectif cible standard et n'est pas exécuté automatiquement à chaque installation.

cleansupprime le dossier cible - il supprime tous les fichiers de classe, les documents java, les fichiers jar, les rapports, etc. Si vous ne le faites pas clean, alors maven ne fera que "faire ce qui doit être fait", comme s'il ne compilait pas les classes lorsque les fichiers source correspondants n'avaient pas changé (en bref).

nous l'appelons cible en fourmi et objectif en maven

Andreas Dolk
la source
1
Je pense que dans ce contexte, nettoyer et installer sont des phases de cycle de vie, pas des objectifs.
JL_SO
4

Idem pour @Andreas_D, en plus si vous dites mettre à jour Spring d'une version à une autre dans votre projet sans faire de nettoyage, vous vous retrouverez avec les deux dans votre artefact. Je me suis beaucoup impliqué dans ce développement Flex avec Maven.

mezmo
la source