Maven 构建 Java 项目

Maven 构建 Java 项目(完整实战 · 2025 最新版)

目标:从零开始,用 Maven 构建一个可运行的 Java 应用
包含:编译 → 测试 → 打包 → 运行 → 部署


一、项目结构(约定优于配置)

my-java-app/
├── pom.xml
└── src/
    ├── main/
    │   ├── java/
    │   │   └── com/example/App.java
    │   └── resources/
    │       └── log4j2.xml
    └── test/
        └── java/
            └── com/example/AppTest.java

二、创建项目(3 种方式)

方式 1:命令行快速生成(推荐)

mvn archetype:generate \
  -DgroupId=com.example \
  -DartifactId=my-java-app \
  -DarchetypeArtifactId=maven-archetype-quickstart \
  -DinteractiveMode=false

自动生成标准结构 + pom.xml


方式 2:IDEA 一键创建

  1. File → New → Project
  2. 选择 Mavenmaven-archetype-quickstart
  3. 填写 GAV → Finish

方式 3:手动创建(理解原理)

mkdir -p my-java-app/src/main/java/com/example
mkdir -p my-java-app/src/main/resources
mkdir -p my-java-app/src/test/java/com/example
cd my-java-app

三、编写 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>com.example</groupId>
    <artifactId>my-java-app</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>

    <name>My Java App</name>
    <description>一个 Maven 构建的 Java 示例项目</description>

    <!-- 统一属性 -->
    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <log4j2.version>2.23.1</log4j2.version>
    </properties>

    <!-- 依赖 -->
    <dependencies>
        <!-- 日志 -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>${log4j2.version}</version>
        </dependency>

        <!-- 测试 -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>5.10.3</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <!-- 构建配置 -->
    <build>
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <!-- 编译插件(可选,属性已覆盖) -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.13.0</version>
            </plugin>

            <!-- 打包成可执行 JAR -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.6.0</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals><goal>shade</goal></goals>
                        <configuration>
                            <transformers>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>com.example.App</mainClass>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <!-- 打包源码 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>3.3.1</version>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <goals><goal>jar</goal></goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

四、编写 Java 代码

src/main/java/com/example/App.java

package com.example;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class App {
    private static final Logger logger = LogManager.getLogger(App.class);

    public static void main(String[] args) {
        logger.info("Hello Maven! Java 项目构建成功!");
        System.out.println("版本: " + App.class.getPackage().getImplementationVersion());
    }

    public String greet(String name) {
        return "Hello, " + name + "!";
    }
}

src/main/resources/log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level - %msg%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

五、编写单元测试

src/test/java/com/example/AppTest.java

package com.example;

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;

public class AppTest {
    @Test
    void testGreet() {
        App app = new App();
        assertEquals("Hello, Maven!", app.greet("Maven"));
    }
}

六、构建与运行(核心命令)

cd my-java-app

# 1. 清理 + 编译 + 测试 + 打包
mvn clean package

# 2. 查看输出
ls target/
# → my-java-app.jar
# → my-java-app-shaded.jar  ← 可执行胖 JAR
# → my-java-app-sources.jar

# 3. 运行普通 JAR(需 classpath)
java -cp target/my-java-app.jar com.example.App

# 4. 运行可执行 JAR(推荐)
java -jar target/my-java-app-shaded.jar

输出

15:23:45.123 [main] INFO  - Hello Maven! Java 项目构建成功!
版本: 1.0.0

七、IDEA 集成(一键运行)

  1. 打开 my-java-app 文件夹
  2. IDEA 自动识别 Maven 项目
  3. 右键 App.javaRun ‘App.main()’
  4. 或使用 Maven 面板:
  • Lifecycle → package
  • Plugins → shade:shade

八、发布到本地仓库

mvn install

→ 安装到 ~/.m2/repository/com/example/my-java-app/1.0.0/

其他项目可依赖:

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

九、进阶:配置文件多环境

<!-- pom.xml 中添加 profiles -->
<profiles>
  <profile>
    <id>dev</id>
    <activation><activeByDefault>true</activeByDefault></activation>
    <properties><env>dev</env></properties>
  </profile>
  <profile>
    <id>prod</id>
    <properties><env>prod</env></properties>
  </profile>
</profiles>
mvn package -Pprod

十、完整命令速查

命令作用
mvn compile编译主代码
mvn test运行测试
mvn package打包
mvn clean package清理 + 打包
mvn install安装到本地仓库
mvn -DskipTests package跳过测试
java -jar target/*-shaded.jar运行

恭喜!你已成功用 Maven 构建 Java 项目!


下一步推荐

方向内容
Spring Boot 项目spring-boot-maven-plugin
多模块项目拆分 common / service / web
Docker 镜像dockerfile-maven-plugin
CI/CDGitHub Actions + Maven

需要 Spring Boot + Maven 完整项目模板
回复 Spring Boot Maven 立即获取 GitHub 链接!

类似文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注