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 installo 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 installo 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.
deployfa. Se lo sostituisci con package, non verrà distribuito su Nexus.
mvn installè l'opzione più utilizzata.
mvn packageviene 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 packagecreerà solo un file jar.
mvn installlo 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 targetdirectory 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 packagese 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/repositoryse si utilizza il pacchetto per il proprio progetto.
In pratica, se provi persino a farlo, mvn sitedi solito devi fare mvn installprima. Ci sono troppi bug con uno siteo 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.