【プログラミング】【ビルド】Maven - j-komatsu/myCheatSheet GitHub Wiki

Mavenについて

📘 読み方

Maven(メイヴン)


📗 初学者向け:Mavenの基本

🔰 Mavenとは?

Javaプロジェクトのビルドツールです。
「プロジェクトの設計図(POM)」をもとに、以下を自動で行ってくれます。

  • コンパイル
  • テスト実行
  • JAR/WARの作成
  • 外部ライブラリの管理(依存性解決)

🧠 たとえ話

Mavenは「料理のレシピ本+買い物代行人」のようなもの。
「この材料(ライブラリ)を揃えて、この手順(ビルド)で料理(アプリ)を完成させて」と指示すれば、全部やってくれる。


📁 Mavenのプロジェクト構成(標準構造)

my-app/
├── pom.xml                <- 設定ファイル(プロジェクトのレシピ)
└── src/
    ├── main/
    │   └── java/          <- 本番コード
    └── test/
        └── java/          <- テストコード

🛠 基本コマンド

コマンド 説明
mvn compile Javaソースコードをコンパイル
mvn test テストを実行
mvn package JAR/WARを作成
mvn clean targetディレクトリを削除
mvn install ローカルにライブラリ登録

🧪 サンプル:依存関係の追加(JUnit)

<!-- pom.xml に追記 -->
<dependencies>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.13.2</version>
    <scope>test</scope>
  </dependency>
</dependencies>

🎯 入力 → 出力例

入力 出力
mvn package 実行 target/my-app-1.0-SNAPSHOT.jar生成

📊 Mavenの特徴(初心者向け)

特徴 内容
標準構成 決まったディレクトリ構成で迷わない
POMファイル XML形式で依存関係や設定を管理
リポジトリ ライブラリは自動でネットから取得
プロジェクトの再現性 誰が実行しても同じ構成でビルドできる

📙 専門者向け:Mavenの詳細活用

🧩 POMファイルの構造

<project>
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.example</groupId>
  <artifactId>my-app</artifactId>
  <version>1.0.0</version>

  <dependencies>
    <!-- ライブラリ定義 -->
  </dependencies>

  <build>
    <plugins>
      <!-- プラグイン設定 -->
    </plugins>
  </build>
</project>

🗂 Mavenのライフサイクル(Mermaid図)

graph TD
  A[validate] --> B[compile]
  B --> C[test]
  C --> D[package]
  D --> E[verify]
  E --> F[install]
  F --> G[deploy]
Loading

🧰 よく使うプラグイン例

プラグイン名 目的
maven-compiler-plugin Javaのバージョン指定など
maven-surefire-plugin テストの設定
maven-jar-plugin JAR出力設定

例:Javaバージョンを指定

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.11.0</version>
      <configuration>
        <source>11</source>
        <target>11</target>
      </configuration>
    </plugin>
  </plugins>
</build>

🗃 リポジトリの種類

種類 内容
ローカル PC内の ~/.m2/repository
セントラル Maven公式が提供する巨大なリポジトリ
プライベート 独自に用意した社内用リポジトリなど

📌 プロファイルの活用(環境ごとの切替)

<profiles>
  <profile>
    <id>dev</id>
    <properties>
      <env>development</env>
    </properties>
  </profile>
  <profile>
    <id>prod</id>
    <properties>
      <env>production</env>
    </properties>
  </profile>
</profiles>

実行時:

mvn package -Pdev

🧠 Maven vs Gradle(比較表)

比較項目 Maven Gradle
設定ファイル XML(pom.xml) Groovy/Kotlin(build.gradle)
学習コスト やや高
カスタマイズ性 低(だが安定) 高(柔軟だが複雑になりがち)

🏁 まとめ

MavenはJavaエンジニアにとって「デファクトスタンダード」と言えるビルドツールです。
開発初期から運用まで、構造をシンプルに保ちながら自動化を助けてくれます。


🛠 生成済みサンプルコードまとめ

  • pom.xml の最小構成
  • JUnitの依存追加
  • Javaバージョンの設定
  • 環境プロファイル切替例

⚠️ **GitHub.com Fallback** ⚠️