このガイドでは、Mavenを使用して簡単なJavaプロジェクトを構築する方法を説明します。
何を作りますか
時刻を提供するアプリケーションを作成し、Mavenを使用してビルドします。
何が必要ですか
1.約15分
2.お気に入りのテキストエディタまたはIDE
3. JDK 8以降
このガイドを完了する方法
最初から開始して各ステップを完了することも、すでに知っている基本的なセットアップステップをバイパスすることもできます。どちらの方法でも、最終的には作業コードを使用できます。
設定項目
まず、MavenがビルドするJavaプロジェクトを設定する必要があります。Mavenに集中するために、プロジェクトはできる限りシンプルになりました。選択したプロジェクトフォルダにこの構造を作成します。
ディレクトリ構造を作成する
選択したプロジェクトディレクトリで、次のサブディレクトリ構造を作成します(例:** nix **システム上の** mkdir -p src / main / java / hello)。
Mavenを使用したJavaプロジェクトの構築
src / main / java / helloディレクトリで、必要なJavaクラスを作成できます。このガイドの他の部分と整合性を保つために、HelloWorld.javaとGreeter.javaの2つのクラスを作成します。
src / main / java / hello / HelloWorld.java
。
こんにちはパッケージ。
パブリッククラスHelloWorld {
public static void main(String [] args){
Greeter greeter = new Greeter();
System.out.println(greeter.sayHello());
}
}src / main / java / hello / Greeter.java
こんにちはパッケージ。
public class Greeter {
public String sayHello(){
return "Hello world!";
}
}
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"、arch :「amd64」、ファミリー:「unix」
おめでとうございます!これでMavenがインストールされました。
情報:[Mavenラッパー](https://github.com/takari/maven-wrapper)を使用して、開発者が正しいバージョンのMavenを入手したり、完全にインストールしたりできないようにすることを検討してください。[Spring Initializr](https://start.spring.io/)からダウンロードしたプロジェクトにはすべてラッパーが含まれています。プロジェクトの最上位にmvnwをmvnではなくスクリプトの形で表示します。
##単純なMavenビルドを定義する
Mavenがインストールされたので、Mavenプロジェクト定義を作成する必要があります。Mavenプロジェクトは、pom.xmlという名前のXMLファイルを使用して定義されます。特に、このファイルはプロジェクト名、バージョン、および外部ライブラリへの依存関係を提供します。
プロジェクトのルートディレクトリにpom.xmlという名前のファイルを作成(つまり、srcフォルダーの横に配置)し、以下を提供します。
pom.xml
。
<?xml version = "1.0" encoding = "UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd ">
<modelVersion> 4.0.0 </ modelVersion><groupId> org.springframework </ groupId>
<artifactId> gs-maven </ artifactId>
<packaging> jar </ packaging>
<version> 0.1.0 </ version><properties>
<maven.compiler.source> 1.8 </maven.compiler.source>
<maven.compiler.target> 1.8 </maven.compiler.target>
</ properties><build>
<plugins>
<plugin>
<groupId> org.apache.maven.plugins </ groupId>
<artifactId> maven-shade-plugin </ artifactId>
<version> 2.1 </ version>
<executions>
<execution>
< phase> package </ phase>
<goals>
<goal> shade </ goal>
</ goals>
<configuration>
<transformers>
<transformer
implementation = "org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass > hello.HelloWorld </ mainClass>
</ transformer>
</ transformers>
</ configuration>
</ execution>
</ executions>
</ plugin>
</ plugins>
</ build>
</ project>
オプションの<packaging>要素に加えて、これはJavaプロジェクトの構築に必要な最も単純なpom.xmlファイルです。以下のプロジェクト構成に関する詳細情報が含まれています。
- <modelVersion>。POMモデルバージョン(常に4.0.0)。
- <groupId>。プロジェクトが属するグループまたは組織。通常、逆ドメイン名として表現されます。
- <artifactId>。プロジェクトに指定するライブラリアーティファクトの名前(たとえば、JARファイルまたはWARファイルの名前)。
- <バージョン>。ビルドされるプロジェクトのバージョン。
- <梱包>。プロジェクトのパッケージ方法。JARファイルのパッケージ化の場合、デフォルトは「jar」です。WARファイルのパッケージ化には「war」を使用します。
この時点で、最小限で強力なMavenプロジェクトを定義しました
Javaコードの作成
Mavenはプロジェクトをビルドする準備ができました。これで、Mavenを使用して、プロジェクトコードのコンパイル、ライブラリパッケージ(JARファイルなど)の作成、ローカルのMaven依存ライブラリへのライブラリのインストールなど、いくつかのビルドライフサイクルの目標を実行できます。
ビルドを試行するには、コマンドラインで次のコマンドを発行します。
mvnコンパイル
これによりMavenが実行され、コンパイルの目標を実行するよう指示されます。完了すると、コンパイルされた.classファイルがtarget / classesディレクトリに見つかります。
.classファイルを直接配布または使用する可能性は低いため、パッケージターゲットを実行する必要がある場合があります。
mvnパッケージ
パッケージ化ターゲットは、Javaコードをコンパイルしてテストを実行し、内部JARファイルを介してコードをパッケージ化して、ターゲットディレクトリを完成させます。JARファイルの名前は、プロジェクトの<artifactId>および<version>に基づいています。たとえば、以前の最小限のpom.xmlファイルを指定すると、JARファイルの名前はgs-maven-0.1.0.jarになります。
JARファイルを実行するには、次のコマンドを実行します。
java -jarターゲット/ gs-maven-0.1.0.jar
値<packaging>を「jar」から「war」に変更すると、結果は、JARファイルではなく、ターゲットディレクトリのWARファイルになります。
Mavenは、ローカルコンピューターの依存関係リポジトリ(通常はメインディレクトリの.m2 /リポジトリディレクトリ)も維持して、プロジェクトの依存関係にすばやくアクセスします。プロジェクトのJARファイルをこのローカルリポジトリにインストールする場合は、インストールターゲットを呼び出す必要があります。
mvn install
インストールターゲットは、プロジェクトのコードをコンパイル、テスト、およびパッケージ化してから、ローカルの依存関係ライブラリにコピーし、別のプロジェクトの依存関係として参照できるようにします。
依存関係と言えば、Mavenビルドで依存関係を宣言する時が来ました。
簡単なHello Worldサンプルの宣言は完全に独立しており、他のライブラリに依存していません。ただし、ほとんどのアプリケーションは、一般的な関数や複雑な関数を処理するために外部ライブラリに依存しています。
たとえば、「Hello World!」と言うだけでなく、アプリケーションに現在の日付と時刻を出力させたいとします。ネイティブJavaライブラリの日付と時刻のツールを使用できますが、Joda Timeライブラリを使用して、物事をより面白くすることができます。
まず、HelloWorld.javaを次のように変更します。
src / main / java / hello / HelloWorld.java
。
こんにちはパッケージ。
import org.joda.time.LocalTime;
パブリッククラスHelloWorld {
public static void main(String [] args){
LocalTime currentTime = new LocalTime();
System.out.println( "現在の現地時間は次のとおりです:" + currentTime);
Greeter greeter = new Greeter();
System.out.println(greeter.sayHello());
}
}
ここで、HelloWorldはJoda TimeのLocalTimeクラスを使用して現在の時刻を取得して出力します。
mvn compileを実行してプロジェクトをビルドする場合、ビルドでJoda Timeをコンパイル依存関係として宣言していないため、ビルドは失敗します。この問題を解決するには、pom.xml(<project>要素内)に次の行を追加します。
<dependencies>
<dependency>
<groupId> joda-time </ groupId>
<artifactId> joda-time </ artifactId>
<version> 2.9.2 </ version>
</ dependency>
</ dependencies>
XMLブロックは、プロジェクトの依存関係リストを宣言します。具体的には、Joda Timeライブラリの依存関係を宣言します。<dependency>要素内で、依存座標は3つの子要素によって定義されます。
- <groupId>-依存関係が属するグループまたは組織。
- <artifactId>-必須ライブラリ。
- <version>-ライブラリの必要な特定のバージョン。
デフォルトでは、すべての依存関係はコンパイル依存関係としてスコープされます。つまり、それらはコンパイル時に使用可能である必要があります(WARファイルを作成している場合は、それをWARの/ WEB-INF / libsフォルダーに含めます)。さらに、<scope>要素を指定して、次のスコープのいずれかを指定できます。
提供-プロジェクトコードのコンパイルに必要な依存関係ですが、実行時にコード(JavaサーブレットAPIなど)を実行するコンテナによって提供されます。
test-Dependenciesは、テストのコンパイルと実行に使用されますが、プロジェクトのランタイムコードのビルドまたは実行には必要ありません。
これで、mvn compileまたはmvn packageを実行すると、MavenはMaven CentralリポジトリからのJoda Time依存関係を解決し、ビルドは成功します
テストを書く
最初に、JUnitをテストスコープのpom.xmlへの依存関係として追加します。
<dependency> <groupId> junit </ groupId> <artifactId> junit </ artifactId> <version> 4.12 </ version> <scope> test </ scope> </ dependency>
次に、次のようにテストケースを作成します。
src / test / java / hello / GreeterTest.java。
こんにちはパッケージ。
import static org.hamcrest.CoreMatchers.containsString;
静的なorg.junit.Assert。*をインポートします。
import org.junit.Test;
public class GreeterTest {
private Greeter greeter = new Greeter();@Test
public void greeterSaysHello(){
assertThat(greeter.sayHello()、containsString( "Hello"));
}
Mavenは「surefire」というプラグインを使用して単体テストを実行します。このプラグインのデフォルト設定は、すべてのクラスをコンパイルして実行します* src / test / javaの名前の一致でテストします。このようにコマンドラインでテストを実行できます
mvn電話
tまたはmvn installですでに示した手順をそのまま使用します(「テスト」が「インストール」の段階として含まれるライフサイクル定義があります)。
これが完成したpom.xmlファイルです。
<?xml version = "1.0" encoding = "UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd ">
<modelVersion> 4.0.0 </ modelVersion><groupId> org.springframework </ groupId>
<artifactId> gs-maven </ artifactId>
<packaging> jar </ packaging>
<version> 0.1.0 </ version><properties>
<maven.compiler.source> 1.8 </maven.compiler.source>
<maven.compiler.target> 1.8 </maven.compiler.target>
</ properties><dependencies>
<!-tag :: joda []->
<dependency>
<groupId> joda-time </
groupId > <artifactId> joda-time </ artifactId>
<version> 2.9.2 </ version>
< / dependency>
<!-end :: joda []->
<!-tag :: junit []->
<dependency>
<groupId> junit </ groupId>
<artifactId> junit </ artifactId>
<version > 4.12 </ version>
<scope> test </ scope>
</ dependency>
<!-end :: junit []->
</ dependencies><build>
<plugins>
<plugin>
<groupId> org.apache.maven.plugins </ groupId>
<artifactId> maven-shade-plugin </ artifactId>
<version> 2.1 </ version>
<executions>
<execution>
< phase> package </ phase>
<goals>
<goal> shade </ goal>
</ goals>
<configuration>
<transformers>
<transformer implementation = "org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass > hello.HelloWorld </ mainClass>
</ transformer>
</ transformers>
</ configuration>
</ execution>
</ executions>
</ plugin>
</ plugins>
</ build>
</プロジェクト>完全なpom.xmlファイルは、Maven Shadeプラグインを使用してJARファイルを実行可能にしています。このガイドの焦点は、この特定のプラグインを使用する代わりにMavenの使用を開始することです。
まとめ
おめでとうございます!Javaプロジェクトを構築するためのシンプルで効果的なMavenプロジェクト定義を作成しました。
あなたも見ることができます
役に立つかもしれ次のガイドライン:
[Gradleを使用してJavaプロジェクトをビルドする](https://blog.csdn.net/weixin_46577306/article/details/105515324)