このガイドでは、Maven を使用して単純な Java プロジェクトを構築する手順を説明します。
時刻を提供するアプリケーションを作成し、Maven で構築します。
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/prereq_editor_jdk_maven_buildtools.adoc
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/how_to_complete_this_guide.adoc
まず、Maven がビルドできるように Java プロジェクトをセットアップする必要があります。 Maven に重点を置き続けるために、現時点ではプロジェクトをできるだけシンプルにしてください。選択したプロジェクト フォルダーにこの構造を作成します。
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/create_directory_ Structure_hello.adoc
src/main/java/hello
ディレクトリ内に、必要な Java クラスを作成できます。このガイドの残りの部分との一貫性を維持するには、 HelloWorld.java
とGreeter.java
2 つのクラスを作成します。
src/main/java/hello/HelloWorld.java
link : initial / src / main / java / hello / HelloWorld . java [ role = include ]
src/main/java/hello/Greeter.java
link : initial / src / main / java / hello / Greeter . java [ role = include ]
Maven を使用してプロジェクトを構築する準備ができたので、次のステップは Maven をインストールすることです。
Maven は、https://maven.apache.org/download.cgi から zip ファイルとしてダウンロードできます。必要なのはバイナリのみなので、apache-maven- {version} -bin.zip または apache-maven- {version} -bin.tar.gz へのリンクを探してください。
zip ファイルをダウンロードしたら、コンピュータに解凍します。次に、 binフォルダーをパスに追加します。
Maven のインストールをテストするには、コマンドラインからmvn
実行します。
mvn -v
すべてがうまくいけば、Maven のインストールに関する情報が表示されるはずです。これは次のようになります (ただし、多少異なる場合があります)。
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T16:41:47+00:00) Maven ホーム: /home/dsyer/Programs/apache-maven Java バージョン: 1.8.0_152、ベンダー: Azul Systems, Inc. Java ホーム: /home/dsyer/.sdkman/candidates/java/8u152-zulu/jre デフォルトのロケール: en_GB、プラットフォームのエンコーディング: UTF-8 OS名:「linux」、バージョン:「4.15.0-36-generic」、アーチ:「amd64」、ファミリー:「unix」
おめでとう!これで Maven がインストールされました。
情報: Maven ラッパーを使用して、開発者が正しいバージョンの Maven を使用すること、または Maven をインストールする必要がないようにすることを検討するとよいでしょう。 Spring Initializr からダウンロードしたプロジェクトにはラッパーが含まれています。これは、プロジェクトの最上位にスクリプトmvnw
として表示され、 mvn
の代わりに実行します。
Maven がインストールされたので、Maven プロジェクト定義を作成する必要があります。 Maven プロジェクトは、 pom.xmlという名前の XML ファイルで定義されます。このファイルには、特に、プロジェクトの名前、バージョン、および外部ライブラリに対する依存関係が含まれています。
プロジェクトのルートにpom.xmlという名前のファイルを作成し (つまり、 src
フォルダーの隣に置きます)、次の内容を追加します。
pom.xml
link:initial/pom.xml[role=include]
オプションの
要素を除いて、これは Java プロジェクトの構築に必要な最も単純なpom.xmlファイルです。これには、プロジェクト構成の次の詳細が含まれます。
。 POM モデルのバージョン (常に 4.0.0)。
。プロジェクトが所属するグループまたは組織。多くの場合、逆ドメイン名として表現されます。
。プロジェクトのライブラリ成果物に付ける名前 (JAR または WAR ファイルの名前など)。
。ビルド中のプロジェクトのバージョン。
- プロジェクトをどのようにパッケージ化するか。 JAR ファイルのパッケージ化のデフォルトは「jar」です。 WAR ファイルのパッケージ化には「war」を使用します。
注記 | バージョン管理スキームの選択に関しては、Spring ではセマンティック バージョニング アプローチを推奨しています。 |
この時点で、最小限でありながら有能な Maven プロジェクトが定義されました。
これで Maven はプロジェクトをビルドする準備ができました。 Maven を使用して、プロジェクトのコードをコンパイルし、ライブラリ パッケージ (JAR ファイルなど) を作成し、ローカルの Maven 依存関係リポジトリにライブラリをインストールするという目標を含む、いくつかのビルド ライフサイクル目標を実行できるようになりました。
ビルドを試すには、コマンド ラインで次のコマンドを実行します。
mvn コンパイル
これにより Maven が実行され、コンパイル目標を実行するように指示されます。完了すると、コンパイルされた.classファイルがtarget/classesディレクトリにあるはずです。
.classファイルを直接配布したり操作したりする可能性は低いため、代わりにパッケージゴールを実行することになるでしょう。
mvn パッケージ
パッケージの目標は、Java コードをコンパイルし、テストを実行し、ターゲットディレクトリ内の JAR ファイルにコードをパッケージ化して終了します。 JAR ファイルの名前は、プロジェクトの
と
に基づきます。たとえば、前の最小限のpom.xmlファイルの場合、JAR ファイルの名前はgs-maven-0.1.0.jarになります。
JAR ファイルを実行するには、次のコマンドを実行します。
java -jarターゲット/gs-maven-0.1.0.jar
注記 | の値を「jar」から「war」に変更した場合、結果は JAR ファイルではなく、ターゲットディレクトリ内に WAR ファイルになります。 |
また、Maven は、プロジェクトの依存関係にすばやくアクセスできるように、ローカル マシン (通常はホーム ディレクトリの.m2/repositoryディレクトリ) に依存関係のリポジトリを維持します。プロジェクトの JAR ファイルをローカル リポジトリにインストールする場合は、 install
ゴールを呼び出す必要があります。
mvn インストール
インストールの目標では、プロジェクトのコードをコンパイル、テスト、パッケージ化してローカルの依存関係リポジトリにコピーし、別のプロジェクトが依存関係として参照できるようにします。
依存関係と言えば、今度は Maven ビルドで依存関係を宣言します。
シンプルな Hello World サンプルは完全に自己完結型であり、追加のライブラリには依存しません。ただし、ほとんどのアプリケーションは、一般的で複雑な機能を処理するために外部ライブラリに依存しています。
たとえば、「Hello World!」と言うことに加えて、アプリケーションに現在の日付と時刻を出力させたいとします。ネイティブ Java ライブラリの日付と時刻機能を使用することもできますが、Joda Time ライブラリを使用すると、物事をさらに面白くすることができます。
まず、HelloWorld.java を次のように変更します。
src/main/java/hello/HelloWorld.java
link : complete / src / main / java / hello / HelloWorld . java [ role = include ]
ここで、 HelloWorld
Joda Time のLocalTime
クラスを使用して、現在時刻を取得して出力します。
ここでmvn compile
実行してプロジェクトをビルドすると、ビルドで Joda Time をコンパイル依存関係として宣言していないため、ビルドは失敗します。これを修正するには、次の行をpom.xml (
要素内) に追加します。
< dependencies >
link:complete/pom.xml[role=include]
dependencies >
XML のこのブロックは、プロジェクトの依存関係のリストを宣言します。具体的には、Joda Time ライブラリの単一の依存関係を宣言します。
要素内では、依存関係座標は 3 つのサブ要素によって定義されます。
- 依存関係が属するグループまたは組織。
- 必要なライブラリ。
- 必要なライブラリの特定のバージョン。
デフォルトでは、すべての依存関係はcompile
依存関係としてスコープされます。つまり、これらはコンパイル時 (および WAR ファイルをビルドしている場合 (WAR の/WEB-INF/libsフォルダーを含む)) で利用可能である必要があります。さらに、
要素を指定して、次のいずれかのスコープを指定できます。
provided
- プロジェクト コードのコンパイルに必要な依存関係ですが、コードを実行するコンテナ (Java サーブレット API など) によって実行時に提供されます。
test
- テストのコンパイルと実行に使用される依存関係ですが、プロジェクトのランタイム コードのビルドや実行には必要ありません。
ここで、 mvn compile
またはmvn package
実行すると、Maven は Maven Central リポジトリから Joda Time の依存関係を解決し、ビルドは成功します。
まず、テスト スコープ内の pom.xml に依存関係として JUnit を追加します。
link:complete/pom.xml[role=include]
次に、次のようなテスト ケースを作成します。
src/test/java/hello/GreeterTest.java
link : complete / src / test / java / hello / GreeterTest . java [ role = include ]
Maven は、単体テストを実行するために「surefire」というプラグインを使用します。このプラグインのデフォルト設定では、 *Test
と一致する名前を持つsrc/test/java
内のすべてのクラスがコンパイルされ、実行されます。次のようにコマンドラインでテストを実行できます
mvn テスト
または、上ですでに示したように、単にmvn install
ステップを使用します (「test」が「install」のステージとして含まれるライフサイクル定義があります)。
完成したpom.xml
ファイルは次のとおりです。
pom.xml
link:complete/pom.xml[role=include]
注記 | 完成したpom.xmlファイルは、JAR ファイルを実行可能にする簡単な便宜のために Maven Shade プラグインを使用しています。このガイドの焦点は、この特定のプラグインを使用することではなく、Maven を使い始めることです。 |
おめでとう! Java プロジェクトを構築するための、シンプルかつ効果的な Maven プロジェクト定義が作成されました。
次のガイドも役立つ場合があります。
Gradle を使用した Java プロジェクトの構築
https://raw.githubusercontent.com/spring-guides/getting-started-macros/main/footer.adoc