Maven创建Java项目实战全流程

目录

[一、初始化 Maven 项目](#一、初始化 Maven 项目)

[二、配置 pom.xml(Maven 核心文件)](#二、配置 pom.xml(Maven 核心文件))

三、项目结构调整与编码

四、构建项目

五、运行/部署

[🔑 六、总结流程](#🔑 六、总结流程)


Maven 创建 Java 项目的完整流程的流程分为 5 大阶段:初始化 → 配置 → 依赖管理 → 构建 → 运行/部署。


一、初始化 Maven 项目

  1. 选择 archetype(模板)

    Maven 项目通过 archetype 快速生成标准目录结构和基础文件。

    常用模板:

    • maven-archetype-quickstart → 普通 Java 项目(jar 包)

    • maven-archetype-webapp → Web 项目(war 包)

    • 自定义 archetype → 公司内部通用模板

  2. 创建命令示例

    复制代码
    mvn archetype:generate \
        -DgroupId=com.itranswarp.learnjava \
        -DartifactId=web-servlet-hello \
        -DarchetypeArtifactId=maven-archetype-webapp \
        -DinteractiveMode=false

    参数解释:

    • groupId:组织/公司包名基础路径

    • artifactId:项目名

    • version:版本号(默认为 1.0-SNAPSHOT

    • archetypeArtifactId:项目模板

    • interactiveMode=false:非交互式,直接生成

  3. 生成目录结构(Web 工程示例)

    复制代码
    web-servlet-hello/
    ├─ pom.xml
    ├─ src/
    │  ├─ main/
    │  │  ├─ java/         # 源代码
    │  │  └─ webapp/       # JSP、静态资源
    │  │      └─ WEB-INF/
    │  │          └─ web.xml
    │  └─ test/             # 测试代码
    └─ target/              # 构建输出

二、配置 pom.xml(Maven 核心文件)

  1. 定义基本信息

    复制代码
    <groupId>com.itranswarp.learnjava</groupId>
    <artifactId>web-servlet-hello</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>
    • packaging 决定打包类型:jarwarpom
  2. 设置编译属性

    复制代码
    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
    </properties>
  3. 添加依赖

    Maven 的强大之处在于 依赖管理

    复制代码
    <dependencies>
        <dependency>
            <groupId>jakarta.servlet</groupId>
            <artifactId>jakarta.servlet-api</artifactId>
            <version>5.0.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
    • Maven 会自动下载依赖及其传递依赖到本地仓库 (~/.m2/repository)

    • scope=provided:运行时由服务器提供,不打包到 war


三、项目结构调整与编码

  1. 源代码目录

    复制代码
    src/main/java    -> Java 代码
    src/main/resources -> 配置文件
    src/main/webapp  -> JSP、静态资源、WEB-INF/web.xml
    src/test/java    -> 单元测试
  2. 示例 Servlet

    复制代码
    package com.itranswarp.learnjava;
    
    import jakarta.servlet.http.*;
    import jakarta.servlet.annotation.*;
    
    @WebServlet("/hi")
    public class HelloServlet extends HttpServlet {
        protected void doGet(HttpServletRequest request, HttpServletResponse response) {
            response.setContentType("text/plain");
            response.getWriter().println("Hello, Servlet!");
        }
    }
  3. 配置 web.xml(可选,Servlet 3.0+ 可以用注解)

    复制代码
    <web-app xmlns="http://jakarta.ee/xml/ns/jakartaee" version="5.0">
    </web-app>

四、构建项目

  1. 命令

    复制代码
    mvn clean package

    阶段说明:

    • clean → 清理旧的 target 文件

    • compile → 编译源代码

    • test → 运行测试(可跳过 -DskipTests

    • package → 按 packaging 打包成 .jar.war

  2. 常用构建命令

    • mvn install → 构建并安装到本地仓库,供其他项目引用

    • mvn deploy → 上传到远程仓库(企业内部使用)

  3. 输出

    复制代码
    target/hello.war

五、运行/部署

  1. Web 工程部署

    • target/hello.war 拷贝到 Tomcat 的 webapps/

    • 启动 Tomcat

    • 浏览器访问:

      复制代码
      http://localhost:8080/hello/hi
  2. 普通 Java 工程

    • 打包成 jar:

      复制代码
      mvn clean package
      java -jar target/xxx.jar

🔑 六、总结流程

Maven 项目创建全流程(概览)

复制代码
选择 archetype → 生成基础目录结构 → 配置 pom.xml → 添加依赖
        ↓
      编写源代码 → 调整目录与资源 → 测试
        ↓
     mvn clean package → 生成可运行包
        ↓
部署/运行 → 本地/服务器
  • Maven 核心思想:标准化 + 自动化 + 依赖管理

  • 企业开发中,Maven 让多人协作、版本管理、构建部署变得可控。

相关推荐
只是懒得想了3 小时前
用C++实现一个高效可扩展的行为树(Behavior Tree)框架
java·开发语言·c++·design-patterns
码农阿树3 小时前
Java 离线视频目标检测性能优化:从 Graphics2D 到 OpenCV 原生绘图的 20 倍性能提升实战
java·yolo·目标检测·音视频
weixin_404551243 小时前
openrewrite Maven plugin configuration
java·maven·configuration·openrewrite
我是华为OD~HR~栗栗呀3 小时前
华为OD-23届考研-Java面经
java·c++·后端·python·华为od·华为·面试
yan8626592463 小时前
于 C++ 的虚函数多态 和 模板方法模式 的结合
java·开发语言·算法
FIavor.3 小时前
Cannot resolve plugin org.apache.maven.plugins:maven-jar-plugin:3.2.2 这怎么办
maven·apache·jar
Le1Yu3 小时前
服务注册、服务发现、OpenFeign及其OKHttp连接池实现
java·服务器
想ai抽3 小时前
深入starrocks-怎样实现多列联合统计信息
java·数据库·数据仓库
shepherd1113 小时前
⏰ 一招鲜吃遍天!详解Java延时队列DelayQueue,从此延时任务不再难!
java·后端·消息队列