English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Snapshots (SNAPSHOT) Maven

Um grande aplicativo de software geralmente contém vários módulos e, na maioria das vezes, a cena é que várias equipes desenvolvem módulos diferentes do mesmo aplicativo. Por exemplo, imagine uma equipe desenvolvendo a frente do aplicativo, o projeto é app-ui(app-ui.jar:1).0),enquanto outra equipe desenvolve o backend da aplicação, usando o projeto data-service(data-service.jar:1).0).

Agora pode ocorrer a seguinte situação de desenvolvimento do data-A equipe de service está realizando correções de bugs ou melhorias no projeto a um ritmo acelerado e quase todos os dois dias lançam bibliotecas para o repositório remoto. Agora, se o data-Se a equipe de service carregar uma nova versão a cada dois dias, surgirão os seguintes problemas:

  • data-A equipe de service deve informar o app sempre que lançar código atualizado.-A equipe UI.

  • app-A equipe UI precisa atualizar frequentemente o arquivo pom.xml para a versão mais recente.

To solve this situation,Snapshotconcept comes into play.

What is a snapshot?

Snapshot is a special version that specifies a copy of the current development progress. Unlike regular versions, Maven checks for new snapshots in the remote repository each time it builds. now data-service team will release the snapshot of the updated code to the repository, for example data-serviço:1.0-SNAPSHOT instead of the old snapshot jar package.

Project snapshot vs version

For versions, if Maven has previously downloaded the specified version file, for example data-serviço:1.0, Maven will no longer download new available 1.0 file. To download the updated code, data-service version needs to be upgraded to1.1.

In the case of snapshot, each app-ui team builds their project, Maven will automatically retrieve the latest snapshot (data-serviço:1.0-SNAPSHOT).

app-ui project's pom.xml file

app-ui project uses data-service project's 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>

data-service project's pom.xml file

data-service project is released for each small change 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>

Embora, em situações de snapshot, o Maven obtenha automaticamente a última versão snapshot no dia a dia, você também pode usá-lo em qualquer comando Maven -O parâmetro U força o Maven a construir a última versão snapshot agora.

mvn clean package -U

Vamos abrir o console de comando, vá para C:\ > MVN > app-vá para o diretório ui, execute o comando mvn a seguir.

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

O Maven baixará dados-Depois de instalar a última versão snapshot do serviço, comece a construir o projeto.

[INFO] Pesquisando por projetos...
[INFO] -------------------------------------------------------------------
[INFO] Construção de consumerBanking
[INFO] tarefa-segmento: [clean, package]
[INFO] -------------------------------------------------------------------
[INFO] Baixando dados-serviço:1.0-SNAPSHOT
[INFO] 290K baixado.
[INFO] [clean:clean {execution: default-clean]
[INFO] Apagando diretório C:\MVN\app-ui\target
[INFO] [resources:resources {execution: default-resources}]
[WARNING] Usando codificação da plataforma (Cp1252 na verdade) para copiar recursos filtrados,
i.e. build depende da plataforma!
[INFO] ignorar diretório de recursos não existente C:\MVN\app-ui\src\main\
recursos
[INFO] [compiler:compile {execution: default-compile}]
[INFO] Compilando 1 arquivo de origem para C:\MVN\app-ui\target\classes
[INFO] [resources:testResources {execution: default-testResources}]
[WARNING] Usando codificação da plataforma (Cp1252 na verdade) para copiar recursos filtrados,
i.e. build depende da plataforma!
[INFO] ignorar diretório de recursos não existente C:\MVN\app-ui\src\test\
recursos
[INFO] [compiler:testCompile {execution: default-testCompile}]
[INFO] Compilando 1 arquivo de origem para C:\MVN\app-ui\target\test-classes
[INFO] [surefire:test {execution: default-test}]
[INFO] Diretório de relatório Surefire: C:\MVN\app-ui\target\
surefire-relatórios
-------------------------------------------------------
 TESTES
-------------------------------------------------------
Executando com.companyname.bank.AppTest
Testes Executados: 1, Falhas: 0, Erros: 0, Ignorados: 0, Tempo decorrido: 0.027 seg
Resultados:
Testes Executados: 1, Falhas: 0, Erros: 0, Ignorados: 0
[INFO] [jar:jar {execution: default-jar}]
[INFO] Construção de jar: C:\MVN\app-ui\target\
app-ui-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] CONSTRUÇÃO BEM-SUCEDIDA
[INFO] ------------------------------------------------------------------------
[INFO] Tempo Total: 2 segundos
[INFO] Concluído em: Terça, Jul 10 16:52:18 IST 2012
[INFO] Memória Final: 16M/89M
[INFO] ------------------------------------------------------------------------