Maven-Snapshot (SNAPSHOT)
Eine große Softwareanwendung enthält normalerweise mehrere Module, und das typische Szenario ist, dass mehrere Teams verschiedene Module derselben Anwendung entwickeln. Stellen Sie sich zum Beispiel vor, ein Team entwickelt das Frontend der Anwendung mit dem Projekt app-ui (app-ui.jar:1.0), während ein anderes Team das Backend mit dem Projekt data-service (data-service.jar:1.0) entwickelt.
Nun ist eine mögliche Situation, dass das Team, das data-service entwickelt, schnelle Fehlerbehebungen oder Projektverbesserungen durchführt und fast jeden zweiten Tag eine Bibliothek in das Remote-Repository veröffentlicht. Wenn nun das data-service-Team jeden zweiten Tag eine neue Version hochlädt, treten die folgenden Probleme auf:
- Das data-service-Team muss das app-ui-Team jedes Mal informieren, wenn es aktualisierten Code veröffentlicht.
- Das app-ui-Team muss seine pom.xml-Datei häufig auf die neueste Version aktualisieren.
Um diese Situation zu lösen, kommtSnapshotgelegen.
Was ist ein Snapshot?
Ein Snapshot ist eine spezielle Version, die eine Kopie des aktuellen Entwicklungsfortschritts angibt. Anders als reguläre Versionen prüft Maven bei jedem Build das Remote-Repository auf neue Snapshots. Nun wird das data-service-Team jedes Mal einen Snapshot des aktualisierten Codes im Repository veröffentlichen, wie data-service:1.0-SNAPSHOT, um das alte Snapshot-JAR zu ersetzen.
Projekt-Snapshot vs. Version
Bei Versionen: Wenn Maven zuvor eine bestimmte Versionsdatei heruntergeladen hat, wie data-service:1.0, lädt Maven nicht erneut eine neue verfügbare 1.0-Datei aus dem Repository herunter. Um aktualisierten Code herunterzuladen, muss die data-service-Version auf 1.1 aktualisiert werden.
Bei Snapshots ruft Maven jedes Mal, wenn das app-ui-Team sein Projekt baut, automatisch den neuesten Snapshot (data-service:1.0-SNAPSHOT) ab.
Die pom.xml-Datei des app-ui-Projekts
Das app-ui-Projekt verwendet den 1.0-Snapshot des data-service-Projekts.
Die pom.xml-Datei des data-service-Projekts
Das data-service-Projekt veröffentlicht für jede kleinere Änderung einen 1.0-Snapshot.
Obwohl Maven bei Snapshots während der täglichen Arbeit automatisch den neuesten Snapshot abruft, können Sie außerdem den Parameter -U in jedem Maven-Befehl verwenden, um Maven zu zwingen, den neuesten Snapshot-Build herunterzuladen.
mvn clean package -U
Öffnen wir die Kommandokonsole, gehen Sie zum Verzeichnis C:\ > MVN > app-ui und führen Sie dann den folgenden mvn-Befehl aus.
C:\MVN\app-ui>mvn clean package -U
Maven beginnt mit dem Erstellen des Projekts, nachdem der neueste Snapshot von data-service heruntergeladen wurde.
[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] Surefire report directory: C:\MVN\app-ui\target\
surefire-reports
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running com.companyname.bank.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.027 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] [jar:jar {execution: default-jar}]
[INFO] Building jar: C:\MVN\app-ui\target\
app-ui-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2 seconds
[INFO] Finished at: Tue Jul 10 16:52:18 IST 2012
[INFO] Final Memory: 16M/89M
[INFO] ------------------------------------------------------------------------ Weitere Erweiterungen