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 让多人协作、版本管理、构建部署变得可控。

相关推荐
咩咩啃树皮8 小时前
第40篇:Vue3组件化开发精讲——组件拆分、复用、父子通信、工程化架构
java·前端·架构
鱟鲥鳚9 小时前
Spring Boot 集成 LangChain4j:从模型调用到 Tool Calling(Demo版)
java·spring boot
大模型码小白10 小时前
【Python零基础教程】继承、多态与魔法函数:面向对象编程三大核心特性详解
java·大数据·开发语言·人工智能·python·ai编程
腾渊信息科技公司11 小时前
Spring Boot对接MES实战:视觉检测数据自动同步方案
java·人工智能·spring boot·后端·计算机视觉·ai·软件需求
爱笑的源码基地12 小时前
高并发 Redis 缓存门诊HIS系统源码,含财务统计药房进销存
java·程序·门诊系统·诊所系统·云诊所源码
wuqingshun31415912 小时前
TCP超时重传机制是为了解决什么问题?
java
罗政12 小时前
基于AI工作流的多渠道销售数据仓库清洗统计实践
数据仓库
莫逸风14 小时前
【AgentScope 2.0】 0. 学习指南
java·llm·agent·agentscope
z1234567898615 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
yaoxin52112315 小时前
470. Java 反射 - Member 接口与 AccessFlag
java·开发语言·python