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

Maven スナップショット(SNAPSHOT)

大規模なソフトウェアアプリケーションは通常、複数のモジュールを含んでおり、多くの場合、複数のチームが同じアプリケーションの異なるモジュールを開発しています。例えば、あるチームがアプリケーションのフロントエンドを開発し、プロジェクトはapp-ui(app-ui.jar:1。0),そして別のチームがアプリケーションのバックエンドを開発し、プロジェクトはdata-service(data-service.jar:1。0)。

現在、開発 data-service チームは高速でバグ修正やプロジェクトの改善を行っており、ほぼ隔日リモートリポジトリにライブラリをリリースしています。 現在、data-service チームが隔日新しいバージョンをアップロードする場合、以下の問題が発生する可能性があります:

  • data-service チームが更新されたコードをリリースするたびに、appに知らせなければなりません。-ui チーム。

  • app-ui チームは定期的にpom.xmlファイルを最新バージョンに更新する必要があります。

この問題を解決するために、スナップショットこの概念が役立ちます。

スナップショットとは何ですか?

スナップショットは、特定の開発進度のコピーを指定する特別なバージョンです。通常のバージョンとは異なり、Maven は構築のたびにリモートリポジトリで新しいスナップショットをチェックします。 現在 data-service チームは、例えば data-service:1.0-SNAPSHOT で古いスナップショットの jar パッケージを置き換えます。

プロジェクトのスナップショットとバージョン

バージョンに対して、Maven が以前に指定されたバージョンのファイルをダウンロードしていました、例えば data-service:1.0、Maven は再び新しい利用可能な 1.0 ファイル。更新されたコードをダウンロードするには、data-service のバージョンを上げる必要があります1。1。

スナップショットの場合、app-ui チームがプロジェクトを構築する際、Maven は自動的に最新のスナップショット(data-service:1.0-SNAPSHOT)。

app-ui プロジェクトの pom.xml ファイル

app-ui プロジェクトは data を使用しています-service プロジェクトの 1.0 快照。

<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 プロジェクトの pom.xml ファイル

data-service プロジェクトは小さな変更ごとにリリースされます 1.0 快照。

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

快照の状況では、Mavenは日常生活で自動的に最新のスナップショットを取得しますが、マavenコマンドのどちらでも使用できます。 -Uパラメータを使用して、Mavenが現在の最新のスナップショットをビルドするように強制します。

mvn clean package -U

コマンドプロンプトを開き、C:\ > MVN > appに移動します。-uiディレクトリに移動し、以下のmvnコマンドを実行します。

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

Mavenはdataをダウンロードします-serviceの最新のスナップショットの後、プロジェクトのビルドを開始します。

[INFO] プロジェクトをスキャンしています...
[INFO] -------------------------------------------------------------------
[INFO] consumerBankingのビルド
[INFO]    task-segment: [clean, package]
[INFO] -------------------------------------------------------------------
[INFO] データのダウンロード中-service:1.0-SNAPSHOT
[INFO] 290K ダウンロードされました。
[INFO] [clean:clean {execution: default-clean]}
[INFO] ディレクトリを削除しています C:\MVN\app-ui\target
[INFO] [resources:resources {execution: default-resources}]
[WARNING] プラットフォームエンコーディングを使用しています(Cp1252 実際には、フィルタリングされたリソースをコピーするために、
たとえば、buildはプラットフォーム依存です!
[INFO] skip non existing resourceDirectory C:\MVN\app-ui\src\main\
resources
[INFO] [compiler:compile {execution: default-compile}]
[INFO] コンパイル 1 ソースファイルを C:\MVN\app-ui\target\classes
[INFO] [resources:testResources {execution: default-testResources}]
[WARNING] プラットフォームエンコーディングを使用しています(Cp1252 実際には、フィルタリングされたリソースをコピーするために、
たとえば、buildはプラットフォーム依存です!
[INFO] skip non existing resourceDirectory C:\MVN\app-ui\src\test\
resources
[INFO] [compiler:testCompile {execution: default}-testCompile}
[INFO] コンパイル 1 ソースファイルを C:\MVN\app-ui\target\test-classes
[INFO] [surefire:test {execution: default}-test}
[INFO] Surefire レポートディレクトリ: C:\MVN\app-ui\target\
surefire-レポート
-------------------------------------------------------
 T E S T S
-------------------------------------------------------
com.companyname.bank.AppTestを実行中
テスト実行: 1, フェイルチャーズ: 0, エラーズ: 0, スキップ: 0, 時間経過: 0.027 秒
結果:
テスト実行: 1, フェイルチャーズ: 0, エラーズ: 0, スキップ: 0
[INFO] [jar:jar {execution: default}-jar}
[INFO] jarのビルド: C:\MVN\app-ui\target\
app-ui-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] 架築成功
[INFO] ------------------------------------------------------------------------
[INFO] 総時間: 2 秒
[INFO] 終了時刻: Tue Jul 10 16:52:18 IST 2012
[INFO] 最終メモリ: 16M/89M
[INFO] ------------------------------------------------------------------------