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 一键创建
File → New → Project- 选择 Maven →
maven-archetype-quickstart - 填写 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 集成(一键运行)
- 打开
my-java-app文件夹 - IDEA 自动识别 Maven 项目
- 右键
App.java→ Run ‘App.main()’ - 或使用 Maven 面板:
Lifecycle → packagePlugins → 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/CD | GitHub Actions + Maven |
需要 Spring Boot + Maven 完整项目模板?
回复 Spring Boot Maven 立即获取 GitHub 链接!