English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Un'applicazione software di grandi dimensioni di solito contiene più moduli, e di solito la scena è che più team sviluppano diversi moduli della stessa applicazione. Prendiamo un esempio, immaginiamo che un team sviluppi la parte frontend dell'applicazione, il progetto è app-ui (app-ui.jar:1.0), mentre un altro team sviluppi la parte backend, utilizzando il progetto data-service (data-service.jar:1.0).
Ora potrebbe verificarsi che il team che sviluppa data-service stia effettuando riparazioni di bug a ritmo accelerato o miglioramenti del progetto, e quasi ogni due giorni pubblicano la libreria nel deposito remoto. Ora, se il team data-service carica una nuova versione ogni due giorni, possono verificarsi i seguenti problemi:
Il team data-service deve informare il team app-ui ogni volta che pubblicano il codice aggiornato.
Il team app-ui deve aggiornare frequentemente il loro file pom.xml alla versione più recente.
Per risolvere questa situazione,SnapshotIl concetto ha trovato la sua utilità.
Gli snapshot sono una versione speciale che specifica una copia di un progresso di sviluppo attuale. Diversamente dalla versione regolare, Maven verifica ogni volta nuovi snapshot nel deposito remoto durante la costruzione. Ora il team data-service pubblicherà regolarmente gli snapshot aggiornati nel deposito, ad esempio data-service:1.0-SNAPSHOT, al posto degli snapshot jar包 vecchi.
Per quanto riguarda la versione, se Maven ha già scaricato il file della versione specificata in precedenza, ad esempio data-service:1.0, Maven non scaricherà più un nuovo file 1.0 disponibile dal deposito. Per scaricare il codice aggiornato, la versione di data-service deve essere aumentata a 1.1.
Nel caso degli snapshot, ogni volta che il team app-ui costruisce il loro progetto, Maven otterrà automaticamente l'ultimo snapshot (data-service:1.0-SNAPSHOT).
Il progetto app-ui utilizza la versione 1.0 dello snapshot del progetto data-service.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>app-ui</groupId> <artifactId>app-ui</artifactId> <version>1.0</version> <packaging>jar</packaging> <name>health</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>data-service</groupId> <artifactId>data-service</artifactId> <version>1.0-SNAPSHOT</version> <scope>test</scope> </dependency> </dependencies> </project>
The data-service project releases version 1.0 snapshot for each minor change.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>data-service</groupId> <artifactId>data-service</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>health</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> </project>
Although, in the case of snapshots, Maven will automatically obtain the latest snapshot during routine work, you can also force Maven to build the latest snapshot now using the -U parameter in any maven command.
mvn clean package -U
Let's open the command console, go to C:\ > MVN > app-ui directory, and then execute the following mvn command.
C:\MVN\app-ui>mvn clean package -U
Maven will start building the project after downloading the latest snapshot of data-service.
[INFO] Scanning for projects... [INFO] ------------------------------------------------------------------- [INFO] Building consumerBanking [INFO] task-segment: [clean, package] [INFO] ------------------------------------------------------------------- [INFO] Downloading data-service:1.0-SNAPSHOT [INFO] 290K downloaded. [INFO] [clean:clean {execution: default-clean}] [INFO] Deleting directory C:\MVN\app-ui\target [INFO] [resources:resources {execution: default-resources}] [WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory C:\MVN\app-ui\src\main\ resources [INFO] [compiler:compile {execution: default-compile}] [INFO] Compiling 1 source file to C:\MVN\app-ui\target\classes [INFO] [resources:testResources {execution: default-testResources}] [WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory C:\MVN\app-ui\src\test\ resources [INFO] [compiler:testCompile {execution: default-testCompile}] [INFO] Compiling 1 source file to C:\MVN\app-ui\target\test-classes [INFO] [surefire:test {execution: default-test}] [INFO] Directory del report Surefire: C:\MVN\app-ui\target\ surefire-reports ------------------------------------------------------- TEST ------------------------------------------------------- Esecuzione com.companyname.bank.AppTest Test eseguiti: 1, Fallimenti: 0, Errori: 0, Saltati: 0, Tempo impiegato: 0.027 sec Risultati: Test eseguiti: 1, Fallimenti: 0, Errori: 0, Saltati: 0 [INFO] [jar:jar {execution: default-jar}] [INFO] Costruzione jar: C:\MVN\app-ui\target\ app-ui-1.0-SNAPSHOT.jar [INFO] ------------------------------------------------------------------------ [INFO] COSTRUIRE CON SUCCESSO [INFO] ------------------------------------------------------------------------ [INFO] Tempo totale: 2 secondi [INFO] Finito il: Mar 10 16:52:18 IST 2012 [INFO] Memoria finale: 16M/89M [INFO] ------------------------------------------------------------------------