「?学習のJava開発者はMavenを学ぶ必要がある必要はありません」:ジャワのMavenの開発を扱うときにはほとんど知っているで見られる前に、質問が提起されたレス行うための強力なツールを構築するためのMaven Javaプロジェクトは、私はそれを学ぶ必要があるだろうと思うが、この工欲善其事必先利其器ソフトウェア開発ツールは、最初にあまりああでより多く行うことを学ばなければならない理由、です。だから、最近はほとんどの時間を費やし、Mavenのの基本は脳に編成しました:
この文書では、主に次のようにおおよその記事を読み、Mavenのの概念のいくつかを紹介します。
インストールのmaven
のconfigureのmaven
構文コマンドのMavenの
のビルドサイクルMavenのコレクション
など依存性、プラグイン、に再編成した後、左の設定セクションなど、他の高度な機能。
Mavenのインストール
Mavenをインストールする手順速い、JDKのホームディレクトリに必ずJAVA_HOME環境変数のポイントは、インストールする前に、echoコマンドの出力JAVA_HOMEディレクトリを使用することができ作る、非常に簡単です:
echo $JAVA_HOME
出力が設定、またはヌルポイントが間違ってJAVA_HOMEを説明されていない場合は、派生輸出JAVA_HOME変数を使用することができます。
export JAVA_HOME=/path/to/java_home/
効果にJAVA_HOME変数のパワーに、あなたがかもしれJAVA_HOME = /パス/に/ JAVA_HOME / .profileまたは.bash_profileのマシン環境に応じて配置します。
JAVA_HOME環境変数を設定したら、Mavenをインストールすることができます。
apache-maven-3.6.3-bin.zipダウンロード
apache-maven-3.6.3-bin.zip圧縮ファイルを抽出するためのunzipコマンドを使用して
のapache-mavenの-3.6.3-binディレクトリの後に解凍を指し、MAVEN_HOME環境変数を追加する
意志MAVEN_HOME / binには、PATH環境変数を追加します。
ダウンロードMavenの
wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.zip
解凍のMaven
unzip apache-maven-3.6.3-bin.zip
環境変数を設定しMAVEN_HOME
cd apache-maven-3.6.3
pwd #查看当前目录
export MAVEN_HOME=/Users/yjwfn/bin/apache-maven-3.6.3
PATH環境変数を設定します。
export PATH=$PATH:$MAVEN_HOME/bin
もっと有効にするだけで、現在のシェルの端末の設定、自動的にあなたが(別のマシン名は異なるものになります本明細書で使用される、〜/ .bash_profileを、上記のコマンド〜/ .bash_profileファイルまたは〜/ .profileにを置く必要があるたびに起動するように設定するよりも、Linuxが一般的に呼ばれて〜 /.profile):
vi ~/.bash_profile
ファイルに次のコマンドをコピーします。
export MAVEN_HOME=/Users/yjwfn/bin/apache-maven-3.6.3
export PATH=$PATH:$MAVEN_HOME/bin
インストールの確認
インストールを確認MVNコマンドを使用して、MVN位置の出力が正しい表示:
liuweideMacBook-Pro:bin yjwfn$ which mvn
/Users/yjwfn/bin/apache-maven-3.6.3/bin/mvn
使用MVN -v(いくつかのシステムはMavenのが付属しているので)のMavenのインストールバージョンが正しいことを表示します。
liuweideMacBook-Pro:bin yjwfn$ mvn -v
Apache Maven 3.6.3 (cecedd343002696d0abb 50b32b541b8a6ba2883f)
Maven home: /Users/yjwfn/bin/apache-maven-3.6.3
Java version: 1.8.0_191, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "mac os x", version: "10.14.6", arch: "x86_64", family: "mac"
ファイル名を指定して実行Mavenの
Mavenの基本的なスタイルのコマンドオプション、目標(S)で実行は、相 (複数可) で構成されています。
mvn [options] [<goal(s)>] [<phase(s)>]
すべてのオプションが表示-h MVNを使用することができます。
liuweideMacBook-Pro:bin yjwfn$ mvn -h
usage: mvn [options] [<goal(s)>] [<phase(s)>]
Options:
-am,--also-make If project list is specified, also
....
Mavenのコマンドがフォーカスされた目標(s)は、これら二つの概念の相(複数可)で、ノートの文字通りの意味は、ステージを意味する、目標です。これらを使用すると、ライフサイクルに関連する他の概念は、後に詳細に説明します。今だけのMavenコマンドを理解する必要があるいくつかのオプション、目的(複数可)、相(複数可)のコンポーネントが含まれています。
Mavenの設定
Mavenを使用すると、構成を変更できる3つの場所があります:
;:MAVEN_OPTS環境変数グローバルMavenは、このようなJVMの設定パラメータ-Xmx512m -Xms256mなどの追加オプション、提供する
ファイルはUSER_HOMEに位置しています/ .m2ディレクトリが複数のMavenプロジェクトに統一されたコンフィギュレーションを提供します。settings.xmlの
ディレクトリ.mvn:このディレクトリの場所をプロジェクトディレクトリのルートディレクトリには、隠しファイルextensions.xmlmaven.configjvm.configです
MAVEN_OPTSは使用
MAVEN_OPTSをデフォルトが空で、環境変数です。-hに設定MAVEN_OPTSをテストするには:
export MAVEN_OPTS=-h #加个-h选项
ない仕事してから実行しMVNパラメータで使用をプリントアウトすることができます。
用法: java [-options] class [args...]
(执行类)
或 java [-options] -jar jarfile [args...]
(执行 jar 文件)
注:使用方法を詳しく見ては、実際のjava -h Javaコマンド出力です:
iuweideMacBook-Pro:bin yjwfn$ java -h
用法: java [-options] class [args...]
(执行类)
或 java [-options] -jar jarfile [args...]
(执行 jar 文件)
そして、テストのjava -h -h MAVEN_OPTS MAVEN_OPTSの誰もがそれを使用する方法を知っている必要がありますので、結果をプリントアウトし、その後一貫MVNを強制する集合!JVMに渡される引数はMAVEN_OPTS変数によって提供されてもよいです。
settings.xmlファイル
のsettings.xmlには、二つのアドレスに配置することができます。
$MAVEN_HOME/conf/settings.xml
USER_HOME/.m2
$ MAVEN_HOMEのステップは、環境変数のセットをインストールすることで、settings.xmlのロードがビューに--debugオプションを開くことができます。
mvn --debug
# 部分控制台输出
[DEBUG] Reading global settings from /Users/yjwfn/bin/apache-maven-3.6.3/conf/settings.xml
[DEBUG] Reading user settings from /Users/yjwfn/.m2/settings.xml
このようなコンソール出力として、$ MAVEN_HOMEとUSER_HOME /中.m2に2つのsettings.xmlファイルをロードします。settings.xmlの設定項目が非常に大きい、詳細な説明は、公式ドキュメントを閲覧することはできません。
MVNディレクトリ
プロジェクトのルートディレクトリにあるMVNディレクトリには、プロジェクトレベルの設定は、一般的に3つのプロファイルで構成されています。
extensions.xml
maven.config
jvm.config
Maven Extensions
extensions.xml 是为了使开发者更方便的使用 Extensions 功能建立的配置文件, Extensions 是一种添加库到 Core Classloader 的方式 , Maven 主要有四类 System Classloader -> Core Classloader -> Plugin Classloaders -> Custom Classloaders 由于 CloassLoader 都是双亲委派模式,所以添加到 Core Classloader 中的库可以在 Plugin Classloaders 和 Custom Classloaders 中使用:
extensions.xml的配置演示:
extensions.xml 这个配置文件就是声明哪些库需要添加到 Core Classloader 中,如下声明将 guava 添加到 Core Classloader 中:
<extensions xmlns="http://maven.apache.org/EXTENSIONS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/EXTENSIONS/1.0.0 http://maven.apache.org/xsd/core-extensions-1.0.0.xsd">
<extension>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>23.0</version>
</extension>
</extensions>
maven.config
maven.config 主要用于添加通用选项,在执行 mvn 命令时会将 maven.config 中配置的命令options添加到命令中。
新建个maven.config文件,内容如下:
-v
直接执行 mvn 不带任何选项,由于在 maven.config 中有 -v 选项,所以打出的内容就是 mvn -v :
liuweideMacBook-Pro:.mvn yjwfn$ mvn
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /Users/yjwfn/bin/apache-maven-3.6.3
Java version: 1.8.0_191, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "mac os x", version: "10.14.6", arch: "x86_64", family: "mac"
liuweideMacBook-Pro:.mvn yjwfn$
jvm.config
jvm.config 是配置JVM参数的文件,很容易理解就不多说了。
Maven 构建生命周期
构建生命周期 就Maven较核心的概念, Maven有三个内置的构建生命周期分别为: clean 、 default 、 site 。
构建阶段(Build Phase)
在Maven中 一个生命周期由一系列 Build Phase 组成 ,而每个生命周期都会有很多 Build Phase 如 default 生命周期由以下 Build Phase 组成:
validate -确认项目正确并且所有必要的信息均可用
compile -编译项目的源代码
test-使用合适的单元测试框架测试编译后的源代码。这些测试不应要求将代码打包或部署
package -获取编译后的代码,并将其打包为可分发的格式,例如JAR。
verify -对集成测试的结果进行任何检查,以确保符合质量标准
install -将软件包安装到本地存储库中,以作为本地其他项目中的依赖项
deploy -在构建环境中完成后,将最终软件包复制到远程存储库中,以便与其他开发人员和项目共享。
这些生命周期阶段(加上此处未显示的其他生命周期阶段)将顺序执行以完成 default 生命周期。给定上面的生命周期阶段,这意味着当使用 default 生命周期时,Maven将首先验证项目,然后尝试编译源代码,针对测试运行源代码,打包二进制文件(例如jar),针对该源运行集成测试软件包,验证集成测试,将经过验证的软件包安装到本地存储库,然后将已安装的软件包部署到远程存储库。
ターゲットをプラグ(プラグインの目標)
ビルドフェーズだけでいくつかのソフトウェアのビルド・プロセスを定義し、それがプロジェクトをビルドするために直接行かない、ビルドプロセスを行うためのプラグインによって実装され、ビルドのライフサイクルは、複数の建物のライフサイクルを理解することができますステージは、各ステージが結合よりプラグインターゲットを構築することで、地図とそれらの間の関係は示しています。
図ジャー:jarファイルは、インストール:プラグインをインストール:コロンは、ターゲット名に続いて、プラグ部名である前に目標が意味しています。(インストールする前に実行する一方、ステージ)を実行したときには、コマンドをインストールMVNことが、上記のグラフが示すことから、デフォルトのライフサイクルステージをインストールし実行し、インストールしますので:ゴールをインストール:インストールターゲットはそう、インストール、相をインストールするにバインドされています実行するには、そのプラグインを介してパッケージの機能をインストール完了します。
まとめ
Mavenのビルドツールは非常に人気があり、次世代のビルドツールGradleのもいくつかのポイントは、Mavenのから借用されています。本文中で言及したポイントは、Mavenのツールの知識の一部にすぎない、Mavenのは、次のような多くの強力な機能があります:依存関係の管理は、プラグイン管理、エンジニアリング、多機能、その後の再編成あなたと共有するこれらの高度な機能を。