compile 是 maven default 生命周期中的编译阶段,负责将 src/main/java 下的 java 源码编译为 .class 文件并输出至 target/classes 目录。

在 Maven 中,compile 命令本身不是独立可执行的命令,而是 Maven 生命周期中的一个阶段。要将 Java 源代码编译为 .class 字节码文件,需运行 mvn compile,Maven 会自动执行 compiler:compile 插件任务。
确认项目结构符合 Maven 标准
Maven 默认只编译 src/main/java 下的源码。确保你的 Java 文件放在该目录下(如 src/main/java/com/example/App.java),否则 mvn compile 不会处理它们。
- 主代码路径必须是
src/main/java - 资源文件(如配置文件)放在
src/main/resources,不会被编译但会被复制到输出目录 - 测试代码应放在
src/test/java,需用mvn test-compile单独编译
执行编译命令
在项目根目录(含 pom.xml 的目录)下运行:
mvn compile
成功后,字节码文件会生成在 target/classes/ 目录中,路径与包结构一致(如 com/example/App.class)。
- 首次运行会自动下载所需插件(如
maven-compiler-plugin)和依赖 - 若报错 “Source option 5 is no longer supported”,说明 JDK 版本与编译器配置不匹配,需在
pom.xml中声明 Java 版本
指定 Java 编译版本(推荐配置)
在 pom.xml 的 <properties></properties> 或 <pluginmanagement></pluginmanagement> 中设置,避免默认使用过低版本:
<properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><maven.compiler.encoding>UTF-8</maven.compiler.encoding></properties>
- 这会告诉 Maven 使用 JDK 17 语法并生成兼容 JDK 17 的字节码
- 若本地 JDK 是 21,但项目需兼容 17,
target应设为 17 - 编码设置防止中文字符编译出错
常见问题排查
如果 mvn compile 没有生成 class 文件或报错:
- 检查
pom.xml是否存在,且格式正确(无 XML 错误) - 确认
JAVA_HOME指向正确的 JDK(非 JRE),且版本 ≥ 配置的source版本 - 运行
mvn clean compile清理旧输出再重试 - 查看错误信息是否提示缺失依赖——Maven 编译时需要所有
compile范围的依赖在本地仓库中
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











