3層アーキテクチャ
現在の技術の問題
- プロジェクトはプロジェクトです
- プロジェクトが大きすぎるため、モジュールをパッケージで分割することは適切ではありません
- Mavenの助けを借りて、プロジェクトを複数のプロジェクトに分割できます
- プロジェクトに必要なjarパッケージは、手動で「コピー」してWEB-INF / libディレクトリに「貼り付ける」必要があります。
- 同じjarパッケージが異なるプロジェクトに表示され、無駄なスペースも肥大化します
- Mavenの助けを借りて、jarパッケージを「ウェアハウス」に格納でき、必要なプロジェクトがこのファイルインターフェイスを「参照」できます。
- jarパッケージには、準備するか、公式Webサイトからダウンロードする人が必要です。
- 一部のテクノロジーの公式Webサイトでは、MavenやSVNなどの特別なツールを介してダウンロードを提供しています。
- ダウンロードしたjarパッケージが標準化されていない場合があります
- Mavenの助けを借りて、標準化された方法でjarパッケージをダウンロードでき、すべてのよく知られたフレームワークはMavenの中央倉庫に保管されます。
- jarパッケージが依存する他のjarパッケージも、自分でプロジェクトに手動で追加する必要があります
- jarパッケージ間のすべての依存関係を理解する必要がある場合、ワークロードは膨大になります
Mavenとは
- Mavenは、Javaプラットフォーム用の自動ビルドツールです。
- jarファイルを自動的に管理する
- jarパッケージが依存するjarパッケージを自動的にダウンロードします
- 要するに、上記の問題は解決することができます
構築する
ビルドは、プロジェクトコードのコンパイル、テスト、実行、パッケージ化、および展開を完了するためのほんの数ステップです。
- クリーンアップ:前のプロジェクトから変更されたものを削除し、新しいコンパイル済みコードの準備をします
- コンパイル:プログラムソースファイルを実行可能ファイル、java–> class file(バッチ)にコンパイルします。
- テスト:プログラムコードを実行して、機能が正しいかどうかを確認できます(バッチ)
- レポート:テスト結果のファイルを生成します
- パッケージ化:すべてのクラスファイルと構成ファイルを圧縮パッケージに圧縮します。Javaプログラムファイルの圧縮ファイルの拡張子は.jarで、Webファイルの圧縮ファイルの拡張子は.warです。
- インストール:jarファイルとwarファイルをローカルウェアハウスにインストールします
キーコンセプト
POM
:ファイルpom.xml
、、プロジェクトオブジェクトモデル- 従来のディレクトリ構造:Mavenプロジェクトのディレクトリとファイルの場所が指定されています
- 座標:リソースを表すために使用される一意の文字列です
- 依存関係の管理:jarファイルは管理プロジェクトに使用できます
- 倉庫管理:リソースの保管
- ライフサイクル:プロジェクトを構築するプロセス
- プラグインと目標:Mavenビルドを実行するときに使用されるツールはプラグインです
インストール
- ダウンロードリンク:http://maven.apache.org/download.cgi
- 環境変数を構成する
M2_HOME
=E:\MavenProject\Maven\apache-maven-3.6\apache-maven-3.6.3
M2_HOME
それに変数を追加しますPath
、%M2_HOME%\bin;
- 注場合は、その
JAVA_HOME
環境変数が正しく設定されていない、エラーが発生しますので、設定しjdk
- テスト
cmd
ウィンドウにmvn -v
コマンドを入力します
- デフォルトのダウンロードアドレス
- デフォルトの倉庫:
C:\Users\DELL\.m2\repository
- デフォルトの倉庫:
- ダウンロード
pom.xml
するディレクトリのコマンドラインウィンドウにコマンドを入力mvn compile
します
倉庫分類
- Mavenプラグイン(jarパッケージ)
- サードパーティのjarパッケージ
- 地元の倉庫
- リモートウェアハウス(インターネット上)
- 中央倉庫https://repo.maven.apache.org
- 中央倉庫のミラーリング(重要な都市)
- プライベートサーバー(社内)
使用:ローカルマシン->プライベートサーバー->ミラーリング->中央倉庫
Mavenが合意したディレクトリ構造
src
- main:メインプログラム
java
コードと構成ファイル
java
:パッケージとパッケージ内のjava
ファイルresources
:java
プログラムで使用する設定ファイル- テストテストプログラムコード
java
:パッケージとパッケージ内のjava
ファイルをテストしますresources
:java
プログラムで使用する設定ファイルpom.xml
:Maven
コアファイル(必須)
テスト
新しいトップディレクトリを作成し、新しいjava
ファイルを作成してから、プロジェクトtarger/classes
ディレクトリの下にjava
ディレクトリをコンパイルしclass
ます。ファイルをコンパイルした後、このディレクトリにファイルが生成されます。
package com.atgw;/*
* @author GaoWei
* Date 2021/1/22--19:53
*/
public class HelloMaven {
public int add(int n1,int n2){
return n1+n2;
}
public static void main(String[] args) {
HelloMaven hello = new HelloMaven();
int res = hello.add(10,20);
System.out.println("10+20="+res);
}
}
クラスディレクトリcmd
にコマンドを入力し、次のコマンドを入力して上記のプログラムを実行します
java com.atgw.HelloMaven
リソースを保存するマシンのディレクトリの場所を設定します
-
Maven構成ファイルを変更する
maven安装目录/conf/settings.xml
- バックアップ
settings.xml
-
で
settings.xml
修正しているE:\MavenProject\Maven\maven_repository
(中国語では表示されません)<!-- 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>E:/MavenProject/Maven/maven_repository</localRepository>
pom.xml
ファイル
座標
このURLで座標を見つけますhttps://mvnrepository.com/
modelVersion |
バージョン4.0.0 |
---|---|
groupId |
組織ID、通常は会社のドメイン名の逆(com.baidu) |
artifactId |
題名 |
version |
プロジェクトのバージョン番号 |
packaging |
梱包および圧縮後の入力(jar、warなど) |
groupId
、artifactId
、version
集合(ユニーク)座標と称される
<groupId>com.atgw</groupId>
<artifactId>Hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
頼る
次の座標に従ってローカルウェアハウス内の関連リソースをクエリします。つまり、jarパッケージをプロジェクトに参照します。
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${atguigu.spring.version}</version>
</dependency>
</dependencies>
properties
:プロパティを設定するbuild
:ビルドに関連する構成
ライフサイクル、コマンド、プラグイン
ライフサイクル
- プロジェクトを構築するプロセス
- 掃除
- コンパイル
- テスト
- 報告する
- ベール
- インストール
- デプロイ
コマンドを使用して上記のライフサイクルを実行します
コマンドを実行すると、プラグイン(jarパッケージ、クラスファイル)が実際に実行されます。
一般的なコマンド
mvn clean |
以前のコンパイルとテストで生成されたディレクトリをクリアします |
---|---|
mvn compile |
メインプログラムのコンパイル コンパイル main/java/ のディレクトリjava にファイルをclass すると同時に、ファイルclass にファイルをコピーしtarget/classes たディレクトリに main/resources ディレクトリ内のすべてのファイルにコピーされtarget/classes たディレクトリ |
mvn test-compile |
テストプログラムをコンパイルする |
mvn test |
テストコードを実行します(事前にコンパイルする必要はありません。前のコマンドプロセスが自動的に実行されます) |
mvn package |
メインプログラムをパッケージ化する |
mvn install : |
以前にパッケージ化されたファイルをローカルウェアハウスにインストールします |
IDEAで使用
次のリンクでは、一般的なプロジェクトとWebプロジェクトを作成するプロセスについて詳しく説明しています。
-
Mavenは組み込みのアイデアですが、Mavenの設定を変更するのは便利ではないため、通常、組み込みは使用されません。
-
自分でインストールしたMavenを使用するには、ideaのデフォルト設定を上書きし、ideaにMavenのインストール場所やその他の情報を指定させる必要があります。
構成エントリ
- 現在のプロジェクト設定を構成する
- 次に、他の設定で新しいプロジェクトを作成します
se
モジュールの作成
スキル
pom.xml
ファイルの更新
pomファイルを設定した後、更新されないために赤いプロンプト行が表示されることがあります
- 単一プロジェクトの更新
- すべてのプロジェクトを更新する
ファイルの種類を設定する
インポートモジュール
従属範囲
Mavenビルドプロジェクトのどのフェーズが機能するかを示します
- ラベル
<!--表示junit只在测试阶段起作用-->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
テスト | コンパイル(デフォルト) 使用するすべてのjarパッケージは自分で持参する必要があります |
提供されている 場合は、持参しないでください |
|
---|---|---|---|
メインプログラムに有効ですか | 番号 | はい | はい |
テスト手順が効果的かどうか | はい | はい | はい |
パッケージングに参加するかどうか | 番号 | はい | 番号 |
展開に参加するかどうか | 番号 | はい | 番号 |
一般的な操作
プロパティ設定
<properties>
<!--maven构建项目使用编码,避免中文乱码-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!--编译代码使用的jdk版本-->
<maven.compiler.source>1.8</maven.compiler.source>
<!--执行代码的jdk版本-->
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
グローバル変数
<properties>
<!--自定义变量-->
<spring-vision>5.2.2</spring-vision>
</properties>
- 定義後、以下の値を参照する場合
${spring-vision}
リソースプラグイン
-
デフォルト
resources
で使用されていない場合、maven
コンパイルされたコードが実行されるsrc/main/resources
と、target/classes
ディレクトリ内のファイルはディレクトリにコピーされます。ディレクトリ内のsrc/main/java
非java
ファイルは処理されず、target/classes
ディレクトリにコピーされません。 -
プログラムは
src/main/java
ディレクトリにいくつかのファイルを配置する必要があります。java
プログラムを実行するときはsrc/main/java
、ディレクトリ内のファイル(プロパティ構成ファイルなど)を使用する必要があります。ディレクトリmaven
内mvn compile src/mian/java
のファイルを通知する必要がある場合は、ファイルを一緒target/classes
にディレクトリにコピーする必要があり、で構成する必要があります。 -
<build> <resources> <resource> <directory>src/main/java</directory> <includes><!--目录下的 .properties, .xml文件都会扫描到--> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <!--filtering = false 表示不启用过滤器,,.*properties已经起到过滤的作用了--> <filtering>false</filtering> </resource> </resources> </build>