Java -- Maven、POM、maven install、maven core、コマンド

1.メイヴン

Maven は、Apache Software Foundation によって管理されている自動ビルド ツールです. Maven という言葉の本来の意味は、エキスパート、エキスパートです。プロジェクト オブジェクト モデル ( Project Object Model略称: POM ) の概念に基づいて、Maven はプロジェクトの構築、レポート、および文書化の手順を中心的な情報で管理できます。

Maven は、Java プロジェクトの依存関係を構築および管理できるプロジェクト管理ツールです。

Maven 公式 Web サイトアドレスMaven 公式 Web サイト

メイヴン・セントラル・ウェアハウスメイヴン・セントラル・ウェアハウス

1. Maven の役割

(1) Mavenは複数のプロジェクトモジュール間の参照を統合でき、業務や機能ごとにプロジェクトを分割することもできる

(2) Maven は jar ファイルとソース コードを自動的にダウンロードでき、jar ファイルと jar バージョンを管理できます (自動バージョン互換性)。

(3) jar パッケージが依存する他の jar パッケージを管理し、プロジェクトを自動的にダウンロードしてインポートする

(4) プログラムをコンパイルし、Java をクラスにコンパイルします。

(5) テストコード

(6) ファイルをパッケージ化し、jar ファイル (Java プロジェクト) または war ファイル (Web プロジェクト) を形成します。

(7) 導入プロジェクト

2. プロジェクトをビルドする

(1) クリーンアップ: 以前のコンパイル結果を削除して再コンパイルの準備をする

(2) コンパイル: Java ソースプログラム (.java ファイル) をバイトコードファイル (.class ファイル) にコンパイルします。

(3)テスト:プロジェクトのキーポイントをテストして、プロジェクトの反復開発プロセスにおけるキーポイントの正確性を確認します

(4) レポート: 各テストの後に、テスト結果を標準形式で記録して表示します。

(5) パッケージ化: 多くのファイルを含むプロジェクトを、インストールまたは展開用の圧縮ファイルにパッケージ化します。(Java プロジェクトは jar パッケージに対応し、Web プロジェクトは war パッケージに対応します)

(6) インストール: Maven 環境では、パッケージ化された結果 (jar パッケージまたは war パッケージ) をローカル ウェアハウスにインストールすることを具体的に指します。

(7) 展開: パッケージ化された結果をリモート ウェアハウスに展開するか、war パッケージをサーバーに展開して実行します

二、Mavenのインストール環境

1. maven 公式 Web サイトから古いバージョンをダウンロードします。ドキュメント、対応する JDK バージョンを表示できます。

Mavenの古いバージョンのダウンロード

2. ダウンロードした maven 圧縮パッケージを指定されたパスの下に置き、解凍します (パスに中国語を含めないでください)。

主に次の2つのディレクトリがあります。

bin : 実行プログラム、主に mvn.cmd
conf : Maven ツール自体の構成ファイル settings.xml

3. Maven 環境変数を構成する

(1) システムの環境変数に、M2_HOMEという新しいシステム変数名を作成し、指定された値はmavenツールのインストールディレクトリ、binの前のディレクトリ

例:M2_HOME=D:\JDK\apache-maven-3.6.3

 (2) 次に、パスに M2_HOME を追加し、すべてのパスの前に %M2_HOME%\bin を追加します。

新しいコマンド ラインで、mvn -v コマンドを実行します。

mvn -v 

最初の実行では、次のようなエラーが報告される場合があります。

The JAVA_HOME environment variable is not defined correctly
This environment variable is needed to run this program
NB: JAVA_HOME should point to a JDK not a JRE

(3) ここに JAVA_HOME システム変数を作成します。 

注: jdk パスを指定するには、JAVA_HOME を構成する必要があります。

maven の実行時に java.exe を使用すると、構成されていないと maven を呼び出すことができませんが、構成されている場合は呼び出すことができます。

この時点で、DOS ウィンドウを閉じて再度開き、再度 mvn -v コマンドを実行すると、次の内容が表示され、maven がインストールされ、正しく構成されています

Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: D:\JDK\apache-maven-3.6.3\bin\..
Java version: 1.8.0_291, vendor: Oracle Corporation, runtime: D:\JDK\java
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

4. mvn compile コマンドを実行する

mvn compile コマンドを初めて実行すると、src/main ディレクトリ内のすべての java ファイルがコンパイルされます。

(1) ダウンロード操作の実行

Maven ツールによって実行される操作を完了するには、多くのプラグイン (Java クラス -- jar ファイル) が必要です。

(2)jarパッケージ(プラグイン)のダウンロード

(3) ダウンロードしたjarパッケージの格納場所

デフォルトのリポジトリ (ネイティブ リポジトリ):

C:\Users\ (OSにログインするためのユーザー名) Administrator\.m2\repository

Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-parameter-documenter-2.0.9.pom

https://repo.maven.apache.org : 中央倉庫のアドレス

mvn compile を実行すると、プロジェクトのルートディレクトリ下にターゲットディレクトリ(結果ディレクトリ)が生成され、maven でコンパイルされた Java プログラム、ターゲットディレクトリに最終的なクラスファイルが配置されます。

5. Maven のインストール ホーム ディレクトリ、setting.xml ファイル、およびローカル ウェアハウスの場所を設定します。

(1) 本機のリソースを格納するディレクトリの場所を設定(ローカルウェアハウスを設定)

デフォルトの倉庫 (ローカル倉庫) 保管場所:

C:\Users\ (OSにログインするためのユーザー名) Administrator\.m2\repository

以下のパスにコピーするなど、設定した対象パスにコピーできます

D:\XXXX\maven-work\repository (パソコンの保存場所)

(2)mavenの設定ファイル、mavenのインストールディレクトリ\conf\settings.xml(例:D:\XXXX\apache-maven-3.6.3\conf\settings.xml(パソコンの保存場所))を修正し、バックアップ設定 .xml

(3) settings.xml ファイルを編集し、<localRepository> を変更してディレクトリを指定します (中国語のディレクトリは使用しないでください)。

        D:\XXXX\maven-work\repository (パソコンの保存場所)

settings.xml ファイルを開き、元の構成が次の 53 行目であることを確認します。

 <localRepository> タグをコピーし、タグ内のパスを、デフォルトの C ドライブからコピーしたリポジトリ フォルダーに変更します。

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  <!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository
  <localRepository>/path/to/local/repo</localRepository>
  -->

  <localRepository>D:\JDK\maven-work\repository</localRepository>

3. Maven コア 

1. 合意されたディレクトリ構造

Maven プロジェクトは「設定より規約」の原則を採用しており、Maven プロジェクトのディレクトリとファイルの場所はすべて規定されています。

一般に、規約 > 設定 > エンコーディング

Maven はデフォルトでディレクトリ構造のセットに設定されます. Maven を介してプロジェクトが作成された後、プロジェクトのディレクトリ構造は、このディレクトリ構造をテンプレートとして使用して作成されます. Maven には多くのテンプレートが用意されていますが、基本的なディレクトリ構造は固定されています。

ルート ディレクトリには 3 つの主要なファイルがあります。

ソース,ターゲット,pom.xml

Hello        根目录(工程名)
|---src      源代码          
|---|---main    主程序
|---|---|---java    主程序的 java 源码
|---|---|---resources    主程序的配置文件
|---|---|---webapp  (web项目)该目录是web应用源代码目录,如html文件和web.xml等都在该目录下
|---|---|---filters 项目的资源过滤文件所在的目录
|---|---test    测试程序
|---|---|---java    测试程序的 java 源码
|---|---|---resources    测试程序的配置文件
|---|---|---filters 测试相关的资源过滤文件所在的目录
|---target    存放编译、打包后的输出文件
|---pom.xml    Maven 工程的核心配置文件

DOS コマンド ウィンドウまたは Windows PowerShell で入力できます。

tree 根目录文件名

以下、木こんにちは 

  

2、ポム

POM (プロジェクト オブジェクト モデル、プロジェクト オブジェクト モデル) は、Maven プロジェクトの基本的な作業単位です. これは、プロジェクトの基本情報を含む XML ファイル ( pom.xml ) であり、プロジェクトの構築方法を記述するために使用されます。プロジェクトの依存関係を宣言するなど。

タスクまたは目標を実行するとき、Maven は現在のディレクトリで POM を探します。POM を読み取り、必要な構成情報を取得して、ゴールを実行します。Maven はプロジェクトをモデルとして使用します。Maven ビルド プロジェクトのプロセスを制御し、jar の依存関係を管理する

 補足ラベル:

1. <scope> タグ: 従属スコープ

スコープ値はcompile、test、provided で、デフォルトは compile です

(1)スコープの依存関係をコンパイルします

メインプログラムに対して有効かどうか: 有効
テストプログラムに対して有効かどうか: 有効
パッケージングに参加するかどうか: 参加する
デプロイに参加するかどうか: 参加する
代表的な例: spring-core

(2)提供される範囲は、以下に依存します。

メインプログラムで有効かどうか:有効
テストプログラムで有効かどうか:有効
パッケージングに参加するかどうか:なし
デプロイメントに参加するかどうか:なし
代表的な例:server-api.jar

(3)テスト範囲は以下に依存します。

メインプログラムで有効かどうか:無効
テストプログラムで有効かどうか:有効
パッケージングに参加するかどうか:なし
デプロイに参加するかどうか:なし
典型的な例:junit

提供されるのは主に Web エンジニアリング用です

Maven ビルド プロジェクトのコンパイル、テスト、パッケージ化、インストール、および展開のプロセス (フェーズ) が機能します。

以下のように、junit の依存範囲は test です。

<dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
</dependency>

2. <properties>タグ:属性設定

[1] Mavenで共通のプロパティ設定

<properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 项目构建使用的编码,避免中文乱
码
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 生成报告的编码
     <maven.compiler.source>1.8</maven.compiler.source> 源码编译 jdk 版本
     <maven.compiler.target>1.8</maven.compiler.target> 运行代码的 jdk 版本
 </properties>

[2] グローバル変数の設定

Maven の pom.xml ファイルでは、<properties> を使用してグローバル変数を定義します。

変数の値は POM で ${property_name} の形式で参照され、ラベル名は一般的にプロジェクト名 + フィールド バージョンで構成されます

1 つの単語に直接 XX.version という名前を付けることができ、複数の単語は水平線 XX-XX-version で区切ることができます

グローバル変数を定義する

<properties>
    <dubbo.version>2.6.2</dubbo.version>
    <spring-context-version>4.3.10.RELEASE</spring-context-version>
</properties>

 グローバル変数を参照する

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dubbo</artifactId>
    <version>${dubbo.version}</version>
</dependency>


<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>${spring-context-version}</version>
</dependency>

3. <resource> タグ: resource; <build> タグ: build

src/main/java および src/test/java ディレクトリ内のすべての *.java ファイルは、comile および test-comiple フェーズでそれぞれコンパイルされ、コンパイル結果は target/classes および target/test-classes に配置されます。ただし、これら 2 つのディレクトリ内の他のファイルは無視されます。src ディレクトリ内のファイル パッケージを target/classes ディレクトリに配置する必要がある場合、それは出力 jar の一部になります。リソース ファイルの場所を指定する必要があります。<buid>タグに以下の内容を入れてください

<build>
    <resources>
         <resource>
             <directory>src/main/java</directory><!--所在的目录-->
             <includes><!--包括目录下的.properties,.xml 文件都会扫描到-->
                 <include>**/*.properties</include>
                 <include>**/*.xml</include>
             </includes>
             <!-- filtering 选项 false 不启用过滤器, *.property 已经起到过滤的作用了 -->
             <filtering>false</filtering>
         </resource>
    </resources>
</build>

 3. 座標 (gav)

Maven は、任意のプラグインをウェアハウス内のプロジェクトとして管理し、一連の (3 つの) ベクトル座標を使用して座標を表します. Maven プロジェクトは、ウェアハウス内に一意に配置できます

groupId: 組織名、通常は会社または組織のドメイン名 + プロジェクト名の逆順

artifactId: モジュール名、通常はプロジェクト名

バージョン: バージョン番号

ウェアハウス内のプロジェクトの位置は座標によって決定されます。groupId、artifactId、および version はウェアハウス内のプロジェクトのパスを決定し、artifactId および version は jar パッケージの名前を決定します。

4. 依存関係の管理 (依存関係)

プロジェクトで使用できる jar ファイルを管理する

依存範囲: コンパイル、テスト、提供、コンパイルがデフォルトで使用されます

ノート:

プロジェクトで使用されるすべての依存関係 (jar) は、ローカル ウェアハウスにある必要があります。提供されているものを含め、ダウンロードする必要があるものを含め、Maven を介してダウンロードする必要はありません。 

5. 倉庫管理

Maven リポジトリは、すべての JAR (WAR、ZIP、POM) が配置されるファイル (主に JAR) の管理に役立ちます。

1.Maven倉庫保管

        [1] Maven プラグイン、プラグインもいくつかの jar であり、これらの jar は特定の機能を完了することができます

        [2] 自社開発プロジェクトのモジュール

        【3】サードパーティのフレームワークやツールのJarパッケージ

2. 倉庫分類

    ローカル倉庫: さまざまな jar を格納する、パーソナル コンピューター上のフォルダー

        デフォルトで ~\.m2\repository に保存

    リモート倉庫、インターネット経由でのみ使用できるインターネットサーバー上の倉庫

        [1] 中央倉庫、最も権威のある、すべての開発者が共有する集中倉庫        

           https://repo.maven.apache.org : 中央倉庫のアドレス

        [2] 中央倉庫の鏡像: 中央倉庫のバックアップ. すべての大陸で, 重要な都市は鏡像です.

        【3】プライベートサーバーは、社外向けではなく、社内およびローカルエリアネットワーク内で使用されます。

6.ライフサイクル

Mavenツールでプロジェクトを構築するプロセスはライフサイクルです

Maven プロジェクトのビルド、クリーニング、コンパイル、テスト、レポート、パッケージ化、インストール、デプロイのプロセス

(1)mvnコンパイル        

main/java/ ディレクトリの java をクラス ファイルにコンパイルし、そのクラスを target/classes ディレクトリにコピーし、
main/resources ディレクトリのすべてのファイルを target/classes ディレクトリにコピーします。

(2)mvn テストコンパイル         

テスト プログラムをコンパイルします (ターゲット ディレクトリは、テスト プログラムのコンパイル後に生成されたバイトコード ファイルを格納する現在のディレクトリに生成されます)。

(3)mvnテスト         

テスト (テスト結果を保存するためにディレクトリ Surefire-reports が生成されます)

(4)mvnパッケージ        

メイン プログラムをパッケージ化します (メイン プログラムをコンパイル、コンパイルおよびテスト、テスト、およびパッケージ化して、pom.xml 構成に従って jar パッケージまたは war パッケージを生成します)。

(5)mvnインストール         

メイン プログラムをインストールします (このプロジェクトは、このプロジェクトの座標に従ってパッケージ化され、ローカルの倉庫に保存されます)

(6)mvn deploy         

メイン プログラムをデプロイします (このプロジェクトはパッケージ化され、このプロジェクトの座標に従ってローカル ライブラリに保存され、プライベート サーバー ウェアハウスにも保存され、Web コンテナーに自動的にデプロイされます)

(1) mvnパッケージでパッケージング後、プロジェクトディレクトリのtargetディレクトリにプロジェクト名-バージョンのjarパッケージが生成される

(2) 自分でコピーしたmavenローカルライブラリにコピーし、プロジェクトパス com.company 組織名.プロジェクト名 をたどる

 (3) 現在パッケージ化されているプロジェクトの pom.xml ファイルの下の座標 (gav) 情報を表示します

 

(4) 参照に依存する必要があるプロジェクトにコピーします 

(5) テストをコンパイルしてパスする

7. プラグイン

maven コマンドが実行されると、実際に機能を完了するのはプラグインです プラグインは、いくつかの jar ファイル、いくつかのクラスです。

8. 継承

9. 重合

おすすめ

転載: blog.csdn.net/MinggeQingchun/article/details/122560887