Sono nuovo di Maven, ho un progetto web basato su Java con Maven configurato nel mio MyEclipse.
Ora se ho modificato qualche file java, allora devo fare Run as -> Mvn install
o Mvn package
?
Sono nuovo di Maven, ho un progetto web basato su Java con Maven configurato nel mio MyEclipse.
Ora se ho modificato qualche file java, allora devo fare Run as -> Mvn install
o Mvn package
?
Risposte:
da http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html
package
: prende il codice compilato e lo impacchetta nel suo formato distribuibile, come un JAR.
install
: installa il pacchetto nel repository locale, per usarlo come dipendenza in altri progetti localmente
Quindi la risposta alla tua domanda è, dipende se la vuoi installata nel tuo repository locale. L'installazione eseguirà anche il pacchetto perché è più in alto nello stack della fase obiettivo.
deploy
fa. Se lo sostituisci con package
, non verrà distribuito su Nexus.
mvn install
è l'opzione più utilizzata.
mvn package
viene usato raramente, solo se si sta eseguendo il debug di qualche problema con il processo di compilazione di Maven.
Vedi: http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
Si noti che mvn package
creerà solo un file jar.
mvn install
lo farà e installerà i file jar (e di classe ecc.) nelle posizioni appropriate se altro codice dipende da quei barattoli.
Di solito faccio un mvn clean install
; questo elimina la target
directory e ricrea tutti i barattoli in quella posizione.
Il clean aiuta con cose non necessarie o rimosse che a volte possono interferire.
Invece di eseguire il debug (qualche volta) basta ricominciare tutto il tempo.
Dal riferimento al ciclo di vita , l' installazione eseguirà i test di integrazione del progetto, il pacchetto no.
Se davvero non è necessario installare gli artefatti generati, utilizzare almeno verifica .
Inoltre, dovresti notare che se il tuo progetto è composto da più moduli che sono dipendenti l'uno dall'altro, dovresti usare "installa" invece di "pacchetto", altrimenti la tua build fallirà, perché quando usi il comando di installazione, il modulo A verrà impacchettato e distribuito nel repository locale e quindi se il modulo B necessita del modulo A come dipendenza, può accedervi dal repository locale.
Se stai non utilizzando un telecomando repository (come Artifactory), utilizzare plain old:
mvn clean install
Argomento piuttosto vecchio ma AFAIK, se gestisci il tuo repository (ad esempio: con artefattore) per condividere il vaso tra i tuoi team, potresti voler usare
mvn clean deploy
anziché.
In questo modo, il server di integrazione continua può essere sicuro che tutte le dipendenze siano inserite correttamente nel repository remoto. Se ne hai perso uno, mvn non sarà in grado di trovarlo nel tuo repository m2 CI locale.
pacchetto: accetta il codice compilato e lo impacchetta nel suo formato distribuibile, ad esempio un file JAR o WAR. installa - installa il pacchetto nel repository locale, per usarlo come dipendenza in altri progetti localmente
Il modo corretto è che mvn package
se hai fatto le cose correttamente per la parte principale della tua build, non dovrebbe essere necessario installare i tuoi pacchetti nel repository locale.
Inoltre, se si utilizza Travis, è possibile "memorizzare nella cache" le proprie dipendenze perché non si toccherà $HOME.m2/repository
se si utilizza il pacchetto per il proprio progetto.
In pratica, se provi persino a farlo, mvn site
di solito devi fare mvn install
prima. Ci sono troppi bug con uno site
o numerosi plugin mal gestiti.
Dipende da cosa stai cercando di ottenere dopo aver modificato il file Java. Fino a quando non vuoi testare il processo maven, non devi mai fare nulla. Eclipse / MyEclipse costruirà ciò che è necessario e posizionerà l'output nella posizione appropriata all'interno del progetto. Puoi anche eseguirlo o distribuirlo (se si tratta di un progetto Web, ad esempio), senza che tu debba esplicitamente fare nulla con Maven. Alla fine, per installare il tuo progetto nel repository maven, dovrai eseguire un'installazione maven. Potresti anche avere altri obiettivi malvagi che desideri eseguire, che MyEclipse non farà automaticamente.
Come ho già detto, dipende da cosa vuoi fare.