Se corro mvn implementare vuol costruire nuovi artefatti o semplicemente distribuire i manufatti già esistenti al server remoto?

StackOverflow https://stackoverflow.com/questions/1544619

  •  20-09-2019
  •  | 
  •  

Domanda

Nota: Questa domanda è stato originariamente pubblicato da Lahiru Gunathilake come < a href = "https://stackoverflow.com/questions/207281/what-is-the-difference-between-mvn-deploy-to-a-local-repo-and-mvn-install/1544396#1544396"> risposta ad un altro domanda . Mi sto muovendo qui come una domanda separata per motivi di chiarezza.

Quando stiamo facendo una release che abbiamo appena costruiamo nella nostra macchina locale e fare il QA e poi ospitiamo dentro al repository. Se corriamo mvn deploy vuol creare nuovi artefatti, questa causa avendo manufatto diverso nel repository e nella distribuzione binaria, perché stiamo creando la distribuzione binaria dal nostro repository locale. Ma se qualcuno ottiene il codice sorgente e fare la build che otterranno uno diverso. Ma se mvn deploy non costruisce ma solo distribuire va bene.

È stato utile?

Soluzione

Come spiegato in costruire Lifecycle Basics :

  

un ciclo di vita di costruzione si compone di fasi

     

Ciascuno di questi costruire cicli di vita è definita da un diverso elenco di fasi di generazione, in cui una fase di generazione rappresenta una 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 al Lifecycle Riferimento ):

     
      
  • 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 opportuno test delle unità. Questi test non dovrebbero richiedere il codice essere confezionate o distribuiti
  •   
  • package - prendere il codice compilato e del pacchetto nel suo formato distribuibile, come ad esempio 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 all'interno della repository locale, per l'uso come una dipendenza in altri progetti a livello locale
  •   
  • deploy - fatto in un'integrazione o rilascio nell'ambiente, copia il pacchetto finale al repository remoto per la condivisione con altri sviluppatori e progetti
  • .   
     

Questi costruiscono fasi (più altre fasi di generazione non illustrati) vengono eseguite in sequenza per completare il ciclo di vita predefinito. Date le fasi di creazione di cui sopra, questo significa che quando viene utilizzato il ciclo di vita di default, Maven dapprima convalidare il progetto, quindi proverà a compilare le sorgenti, eseguire quelle contro i test, pacchetto i binari (es vaso), test di integrazione eseguire contro tale pacchetto, verificare il pacchetto, installare il pacchetto verifed al deposito locale, quindi distribuire il pacchetto installato in un ambiente specifico.

     

Per fare tutti coloro, avete solo bisogno di 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 fase di costruzione, ma anche tutte le fasi prima della chiamata fase di costruzione costruire.

Quindi, la risposta è sì, mvn deploy eseguirà install e costruire i manufatti del progetto. Ma se non si cambia niente, questo produrrà esattamente lo stesso manufatto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top