Учебники

Maven — Снимки

Большое программное приложение обычно состоит из нескольких модулей, и это обычный сценарий, когда несколько команд работают над разными модулями одного и того же приложения. Например, рассмотрим команду, работающую над внешним интерфейсом приложения как проект app-ui (app-ui.jar: 1.0), и они используют проект службы данных (data-service.jar: 1.0).

Теперь может случиться так, что команда, работающая над сервисом данных, быстро исправляет ошибки или совершенствуется, и они выпускают библиотеку в удаленное хранилище почти каждый день.

Теперь, если команда службы обработки данных загружает новую версию через день, возникают следующие проблемы:

  • Команда службы данных должна сообщать команде app-ui каждый раз, когда они выпускают обновленный код.

  • Команда app-ui должна регулярно обновлять свой pom.xml, чтобы получить обновленную версию.

Команда службы данных должна сообщать команде app-ui каждый раз, когда они выпускают обновленный код.

Команда app-ui должна регулярно обновлять свой pom.xml, чтобы получить обновленную версию.

Чтобы справиться с такой ситуацией, в игру вступает концепция SNAPSHOT .

Что такое SNAPSHOT?

SNAPSHOT — это специальная версия, которая указывает текущую версию разработки. В отличие от обычных версий, Maven проверяет наличие новой версии SNAPSHOT в удаленном репозитории для каждой сборки.

Теперь команда по обслуживанию данных будет каждый раз выпускать обновленный код SNAPSHOT в хранилище, скажем, data-service: 1.0-SNAPSHOT, заменяя более старую банку SNAPSHOT.

Снимок против версии

В случае Версии, если Maven однажды скачал упомянутую версию, скажем, data-service: 1.0, он никогда не будет пытаться загрузить более новую версию 1.0, доступную в репозитории. Для загрузки обновленного кода необходимо обновить версию службы данных до версии 1.1.

В случае SNAPSHOT Maven будет автоматически загружать последнюю версию SNAPSHOT (data-service: 1.0-SNAPSHOT) каждый раз, когда команда app-ui создает свой проект.

app-ui pom.xml

Проект app-ui использует 1.0-SNAPSHOT службы данных.

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

служба данных pom.xml

Проект data-service выпускает 1.0-SNAPSHOT для каждого незначительного изменения.

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

Хотя в случае SNAPSHOT Maven автоматически выбирает последнюю версию SNAPSHOT ежедневно, вы можете заставить maven загрузить последнюю сборку моментального снимка, используя ключ -U для любой команды maven.

mvn clean package -U

Давайте откроем командную консоль, перейдем в каталог C: \> MVN> app-ui и выполним следующую команду mvn .

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

Maven начнет сборку проекта после загрузки последней версии SNAPSHOT data-service.