Maven - Ảnh chụp nhanh

Một ứng dụng phần mềm lớn thường bao gồm nhiều mô-đun và tình huống phổ biến là nhiều nhóm đang làm việc trên các mô-đun khác nhau của cùng một ứng dụng. Ví dụ: hãy coi một nhóm đang làm việc trên giao diện người dùng của ứng dụng là dự án app-ui (app-ui.jar: 1.0) và họ đang sử dụng dự án dịch vụ dữ liệu (data-service.jar: 1.0).

Bây giờ có thể xảy ra rằng nhóm làm việc trên dịch vụ dữ liệu đang sửa lỗi hoặc cải tiến với tốc độ nhanh chóng và họ đang phát hành thư viện vào kho lưu trữ từ xa hầu như cách ngày.

Bây giờ nếu nhóm dịch vụ dữ liệu tải lên phiên bản mới cách ngày, thì các vấn đề sau sẽ phát sinh:

  • nhóm dịch vụ dữ liệu nên thông báo cho nhóm ứng dụng mỗi khi họ phát hành mã cập nhật.

  • nhóm app-ui yêu cầu cập nhật pom.xml của họ thường xuyên để có được phiên bản cập nhật.

Để xử lý tình huống như vậy, SNAPSHOT khái niệm đi vào hoạt động.

SNAPSHOT là gì?

SNAPSHOT là một phiên bản đặc biệt chỉ ra một bản sao phát triển hiện tại. Không giống như các phiên bản thông thường, Maven kiểm tra phiên bản SNAPSHOT mới trong kho lưu trữ từ xa cho mọi bản dựng.

Bây giờ nhóm dịch vụ dữ liệu sẽ phát hành SNAPSHOT của mã được cập nhật của nó mỗi lần vào kho lưu trữ, chẳng hạn như data-service: 1.0-SNAPSHOT, thay thế một jar SNAPSHOT cũ hơn.

Ảnh chụp nhanh so với phiên bản

Trong trường hợp Phiên bản, nếu Maven đã từng tải xuống phiên bản được đề cập, chẳng hạn như data-service: 1.0, nó sẽ không bao giờ cố tải xuống phiên bản 1.0 mới hơn có sẵn trong kho lưu trữ. Để tải xuống mã đã cập nhật, phiên bản dịch vụ dữ liệu được nâng cấp lên 1.1.

Trong trường hợp SNAPSHOT, Maven sẽ tự động tìm nạp SNAPSHOT mới nhất (data-service: 1.0-SNAPSHOT) mỗi khi nhóm app-ui xây dựng dự án của họ.

app-ui pom.xml

app-ui dự án đang sử dụng 1.0-SNAPSHOT của dịch vụ dữ liệu.

<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>

dữ liệu-dịch vụ pom.xml

data-service dự án đang phát hành 1.0-SNAPSHOT cho mọi thay đổi nhỏ.

<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>

Mặc dù, trong trường hợp SNAPSHOT, Maven tự động tìm nạp SNAPSHOT mới nhất hàng ngày, bạn có thể buộc maven tải xuống bản dựng ảnh chụp nhanh mới nhất bằng cách sử dụng -U chuyển sang bất kỳ lệnh maven nào.

mvn clean package -U

Hãy mở bảng điều khiển lệnh, đi tới C:\ > MVN > app-ui thư mục và thực thi những điều sau mvn chỉ huy.

C:\MVN\app-ui>mvn clean package -U

Maven sẽ bắt đầu xây dựng dự án sau khi tải xuống SNAPSHOT mới nhất của dịch vụ dữ liệu.

[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: 2015-09-27T12:30:02+05:30
[INFO] Final Memory: 16M/89M
[INFO]------------------------------------------------------------------------