2009-10-09 8 views
22

Nota: Questa domanda è stata originariamente pubblicata da Lahiru Gunathilake come answer in un altro question. Lo sto spostando qui come una domanda separata per motivi di chiarezza.Se eseguo mvn deploy crea nuove risorse o semplicemente distribuisce le risorse già esistenti nel server remoto?

Quando eseguiamo un rilascio, creiamo la nostra macchina locale e eseguiamo il controllo qualità e quindi lo ospitiamo nel repository. Se eseguiamo mvn deploy crea nuovi artefatti, questo causa diversi artefatti nel repository e nella distribuzione binaria perché stiamo creando la distribuzione binaria dal nostro repository locale. Ma se qualcuno ottiene il codice sorgente e lo fa, ne otterrà uno diverso. Ma se mvn deploy non viene compilato ma solo distribuito, va bene.

risposta

27

Come spiegato in Build Lifecycle Basics:

un ciclo di vita del torso è costituito Fasi

Ciascuno di questi costruire cicli di vita è definita da un diverso elenco di fasi di generazione, in cui una fase di generazione rappresenta un fase del ciclo di vita.

Ad esempio, il ciclo di vita di default ha la seguente costruire fasi (per un elenco completo delle fasi di creazione, fare riferimento alla Lifecycle Reference):

  • validate - validare il progetto sia corretta e tutte le informazioni necessarie sono disponibili
  • compile - compilare il codice sorgente del progetto
  • test - testare il codice sorgente compilato utilizzando un framework di test dell'unità adeguato. Questi test non dovrebbero richiedere che il codice sia impacchettato o implementato
  • package - prendi il codice compilato e lo impacchetta nel suo formato distribuibile, come un JAR.
  • integration-test - processo e distribuire il pacchetto, se necessario, in un ambiente in cui i test di integrazione possono essere eseguiti
  • verify - eseguire tutti i controlli per verificare il pacchetto è valido e soddisfa i criteri di qualità
  • install - installare il pacchetto nel locale repository, da utilizzare come dipendenza in altri progetti localmente
  • deploy - eseguito in un ambiente di integrazione o di rilascio, copia il pacchetto finale nel repository remoto per la condivisione con altri sviluppatori e progetti.

Queste fasi di creazione (più le altre fasi di generazione non mostrate qui) vengono eseguite in sequenza per completare il ciclo di vita predefinito. Date le fasi di compilazione sopra, questo significa che quando viene utilizzato il ciclo di vita predefinito, Maven prima convaliderà il progetto, quindi proverà a compilare i sorgenti, eseguirà quelli contro i test, impacchetterà i binari (es. Jar), ​​eseguirà test di integrazione pacchetto, verificare il pacchetto, installare il pacchetto verifed nel repository locale, quindi distribuire il pacchetto installato in un ambiente specificato.

di fare tutte quelle, è sufficiente chiamare l'ultima fase di compilazione da eseguire, in questo caso, distribuire:

mvn deploy 

Questo perché se si chiama una fase di costruzione, si eseguirà non solo quella fase di costruzione, ma anche ogni fase di costruzione prima della fase di costruzione chiamata.

Quindi, la risposta è sì, mvn deploy eseguirà install e costruire i manufatti del progetto. Ma se non cambi nulla, questo produrrà esattamente lo stesso artefatto.