從 C#/MSBuild 角度快速上手 Maven:Java 构建工具入門教學與實務指南

| Japanese | 2 Reads

以下是入門 Maven 的建議路徑,結合您熟悉的 C#/MSBuild 視角,協助快速掌握這個 Java 構建工具:


1. 認識 Maven

定位:
類似 C# 世界中的 MSBuild,負責「專案建置、依賴管理、打包、部署」等工作。

核心概念:

  • Project Object Model (POM): 每個 Maven 專案的 pom.xml 記錄了專案資訊、依賴、建置流程。

  • 座標 (Coordinates):groupId:artifactId:version 來定位一個套件。

  • 生命周期 (Lifecycle): 預設包含 compile → test → package → install → deploy 等階段,每階段由相對應的插件(plugin)完成。

  • 倉庫 (Repository): 本地與遠端(如 Maven Central)分層的依賴套件下載/緩存機制。


2. 安裝與基本指令

  • 安裝 JDK 8+ → 設定 JAVA_HOME

  • 安裝 Maven → 設定 MAVEN_HOME,將 bin 加入 PATH

常用指令:

mvn -v           # 確認版本
mvn clean        # 清理 target 輸出
mvn compile      # 編譯
mvn test         # 執行測試(若有測試)
mvn package      # 打包 (jar/war)
mvn install      # 安裝到本地倉庫 (~/.m2/repository)

3. pom.xml 範例

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>demo-app</artifactId>
  <version>1.0.0</version>
  <packaging>jar</packaging>

  <dependencies>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.7.36</version>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

4. 與 C# 的類比

C# / .NET Java / Maven
.csproj / .sln pom.xml
NuGet 套件 Maven 依賴 (Dependencies)
MSBuild 目標 Maven Lifecycle + Plugins
dotnet build mvn compile/package
obj/bin 輸出 target/
appsettings.json 等資源 src/main/resources/

5. 學習資源

  • 官方文件:https://maven.apache.org/guides/index.html(最權威)。

  • 入門教程:搜尋「Maven 教學」「Maven tutorial」,挑選適合的語言與風格。

  • 範例專案:先從簡單的「Hello World」或「單一模組」開始,逐步加入依賴和插件。

  • 練習:用您的 Java Web 專案(如之前提到的 pom.xml)來修改依賴、升級插件、打包 WAR 等操作。

  • IDE 支援:若使用 IntelliJ IDEA/Eclipse,內建 Maven 工具,能視覺化 pom.xml、自動下載依賴、直接執行建置。


6. 延伸與實務

  • 多模組專案 (<modules>): 類似 C# 的多個子專案組合 solution。

  • Profile: 針對不同環境(dev/test/prod)套用不同設定。

  • CI/CD 整合: 與 Jenkins、GitHub Actions 等結合,在服務器上自動執行 mvn package

常用插件:

  • maven-surefire-plugin:單元測試

  • maven-jar-plugin / maven-war-plugin:打包成 JAR 或 WAR

  • maven-dependency-plugin:檢視、複製依賴


掌握以上基礎後,Maven 就像是在 C# 里的 MSBuild / NuGet 那般順手。
建議多動手實作,加深對生命周期與插件運作方式的理解。
祝學習順利!

This article was last edited at