0
0

More than 1 year has passed since last update.

[リサーチ・メモ] Mavenとは

Last updated at Posted at 2023-07-23

背景

仕事でeclipseを使用して、「Maven install」や「Maven clean」を実行したが、正直Mavenが何者なのか理解せず、何となく使用していた為整理する。

Mavenとは

Javaのプロジェクト管理ツール
Project Object Model (POM) という考え方に基づき、プロジェクトのビルド、テスト、ドキュメンテーション、成果物の配備など、プロジェクトのライフサイクル(計画、設計、実装、テスト、デプロイ、メンテナンス)全体を管理するもの。

POMとは

XML形式のファイル(通常pom.xmlという名前)に記述され、プロジェクトのビルド設定や依存関係、プラグイン、プロジェクト情報(例:プロジェクト名、バージョン、作者等)など、プロジェクトに関するすべての情報を定義する。
MavenはPOMを読み込み、定義に従ってプロジェクトをビルドすることにより、開発者は複雑なビルドプロセス(ソースコードから実行可能なソフトウェアアプリケーションまたはシステムを作り出す一連の手続き)を簡単に管理し、また他の開発者がプロジェクトを理解しやすくすることが可能になる。

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>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.4.1</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>プロジェクト名</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>プロジェクト名</name>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>1.8</java.version>
	</properties>
	<dependencies>
            <dependency>
               <groupId>org.glassfish.jersey.core</groupId>
               <artifactId>jersey-client</artifactId>
               <version>2.32</version>
           </dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<excludes>
						<exclude>
							<groupId>org.projectlombok</groupId>
							<artifactId>lombok</artifactId>
						</exclude>
					</excludes>
				</configuration>
			</plugin>
		</plugins>
	</build>

</project>

要素 内容
?xml version="1.0" encoding="UTF-8"? XML宣言
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 POMモデルのバージョンを指定
parent 親プロジェクトを定義
groupId プロジェクトが属するグループや組織を識別するための識別子で、通常は組織のドメイン名を逆にしたものを使用
artifactId プロジェクトの一意な名前を示す識別子で、Mavenリポジトリ内でプロジェクトを一意に識別するために使用
version プロジェクトのバージョンを定義
name プロジェクトの名前
description プロジェクトの説明
properties プロジェクトで使用するプロパティを定義
dependencies プロジェクトが依存するライブラリやフレームワークを定義
dependency それぞれの依存関係を定義
build ビルドに関する設定を含むセクション。プラグインの設定や、ビルドのデフォルト設定などを定義
plugins プロジェクトで使用するMavenプラグインのリストを定義するセクション
plugin 個々のMavenプラグインの設定を定義
groupId・artifactId プラグインの一意の識別子
configuration プラグインの設定
excludes プラグインから除外されるべきアーティファクトのリストを定義
exclude 除外されるべき個々のアーティファクトを指定

コマンドが実行していること

コマンド 内容
maven clean プロジェクトのビルド時に生成されたファイルを削除することで、ビルドプロセスを"クリーン"な状態に戻す。具体的には、targetディレクトリ内のファイルが削除される。
maven generate-sources 追加のソースコードを生成するために使用される。これは、特定のプラグイン(例えば、JAXBやSwaggerなど)が必要とするソースコードを生成するためのフェーズである。
maven install プロジェクトをビルドし、生成されたアーティファクト(例えば、JARファイルなど)をローカルリポジトリにインストールする。これにより、他のローカルのMavenプロジェクトがこのプロジェクトを依存関係として使用できるようになる。
maven test ユニットテストの実行を行う。このフェーズでは、通常JUnitやTestNGのようなフレームワークを使用してプロジェクトのソースコードに対するユニットテストが実行さる。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0