Maven项目及Tomcat配置(IDEA)

目录

一、Maven项目

项目结构

标准 Maven 目录如下:

plaintext 复制代码
demo/
├── src/
│   ├── main/           # 主程序代码
│   │   └── java/       # Java 源代码(包结构对应 groupId+artifactId)
│   └── test/           # 测试代码
│       └── java/       # 测试类代码
├── pom.xml             # Maven 核心配置文件
└── target/             # 构建输出目录(编译后的 class、打包文件等)

构建项目

编译:mvn compile(将 src/main/java 代码编译到 target/classes)。

测试:mvn test(执行 src/test/java 中的测试类,输出到 target/test-classes)。

打包:mvn package(将项目打包为 JAR 或 WAR,输出到 target 目录)。

安装:mvn install(将打包后的文件安装到本地仓库,供其他项目依赖)。

Maven 的核心概念

  1. POM(Project Object Model,项目对象模型):通过 pom.xml 文件描述项目信息、依赖、构建配置等,是 Maven 项目的核心。
  2. 坐标(GAV):唯一标识一个 Maven 项目或依赖,由三部分组成:
  • groupId:组织 / 公司标识(如 org.springframework)。
  • artifactId:项目 / 模块名称(如 spring-core)。
  • version:版本号(如 5.3.20,SNAPSHOT 表示快照版,RELEASE 表示稳定版)。
  1. 仓库(Repository):存储依赖包的位置,分为:
  • 本地仓库:本地磁盘目录,缓存下载的依赖。
  • 远程仓库:中央仓库(Maven 官方)、镜像仓库(如阿里云)、私有仓库(企业内部)。
  1. 生命周期(Lifecycle):Maven 定义了项目构建的标准流程,包含三个核心生命周期:
  • clean:清理项目(删除 target 目录)。
  • default:核心生命周期(编译、测试、打包、安装、部署等)。
  • site:生成项目站点文档。
  1. 插件(Plugin):Maven 的功能通过插件实现,如 maven-compiler-plugin 负责编译,maven-surefire-plugin 负责执行测试。插件绑定到生命周期的阶段,执行阶段时自动调用插件。

二、手动下载并配置 Tomcat

1. IDEA 本身不内置 Tomcat 服务器

Java Web 项目(基于 Servlet/JSP 技术)必须依赖 Servlet 容器才能运行(容器负责解析 HTTP 请求、管理 Servlet 生命周期、处理动态资源等)。

2. 特殊情况:使用 Maven/Gradle 插件简化配置

如果项目通过 Maven 或 Gradle 管理,可以借助插件(如 tomcat7-maven-plugin)避免手动配置外部 Tomcat,但本质上还是需要依赖 Tomcat 环境:

  • Maven 示例 :在 pom.xml 中添加插件,运行时会自动下载指定版本的 Tomcat 并启动(无需手动安装,但首次运行会耗时下载):

    xml 复制代码
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <port>8080</port> <!-- 端口号 -->
                    <path>/</path>   <!-- 应用上下文 -->
                </configuration>
            </plugin>
        </plugins>
    </build>

    之后通过 mvn tomcat7:run 命令启动项目。

3.手动配置

1)下载tomcat

tomcat官网,进入官网后按需选择适合的 版本就行。

由于我的是JDK 21、IDEA 2025.2.4,这里选择最新的Tomcat 10.1.48



有些时候由于网络问题,压缩包下载速度会非常慢,可以换个时间再试,或者换源

2)在Javaweb项目中配置Tomcat

这里暂时没有设置环境变量,但不影响使用。

1、运行startup.bat文件

当双击运行\apache-tomcat-10.1.48-windows-x64\apache-tomcat-10.1.48\bin文件夹下面的startuo.bat文件闪退之后,处理办法如下:

  1. 右键startup.bat文件,点击"编辑",以记事本的形式打开。

  2. 在startup.bat里面添加java-JDK的安装路径和Tomcat的安装路径(记得修改成自己的),修改完成后保存。

    SET JAVA_HOME=D:\whydown\Java\jdk-21
    SET TOMCAT_HOME=D:\whydown\apache-tomcat-10.1.48-windows-x64\apache-tomcat-10.1.48

  1. 保存后再次双击运行startup.bat文件,会出现如下图的情况

这里的中文乱码原因好像是编码设置的原因,但是不应该后面的设置,可以忽略乱码的问题。

要是希望解决,可以在apache-tomcat-10.1.48-windows-x64\apache-tomcat-10.1.48\conf的文件下面的logging文件中去修改编码的方式。这里参考https://blog.csdn.net/weixin_47700137/article/details/116055222的方法。

将编码方式修改成GBK应该就能解决问题了。

bash 复制代码
java.util.logging.ConsoleHandler.encoding =GBK
2、在运行startup.bat时访问浏览器地址localhost:8080

能正常显示页面即成功。

3、运行shutdown.bat文件,关闭

若是出现闪退的情况,相关设置办法同startup.bat一样,将相关路径加进去,再次运行就好了。

4、打开idea,构建一个Maven项目,进行设置


问题小记录

  1. 在社区版的IDEA里面使用自带的Maven构建了一个需要链接数据库调用存储过程的项目,在这个过程中需要在.m2的某文件下设置settings.xml文件,为pom.xml中的某个设置换阿里云的源,好像是该依赖的仓库在国外的原因。但是,但是由于学习需要,我将社区版的IDEA换成了专业版的IDEA,再次打开调用存储过程项目的时候,好像就不需要我设置setting.xml文件换阿里云的源了,为什么?

Maven的配置(包括settings.xml)是全局的,和IDEA版本无关。

1)Maven的settings.xml是"全局/用户级"配置,不绑定IDEA版本。Maven的配置文件settings.xml有两个存储位置(优先级:用户级 > 全局级):

  • 全局级 :在Maven安装目录的conf/settings.xml(比如IDEA内置Maven的路径:C:\Program Files\JetBrains\IntelliJ IDEA 2025.2\plugins\maven\lib\maven3\conf\settings.xml)。
  • 用户级 :在系统用户目录下的.m2文件夹中(比如C:\Users\你的用户名\.m2\settings.xml)。

在社区版IDEA中修改的是用户级的.m2/settings.xml (这个文件是跟随系统用户的,不是跟随IDEA版本的),所以换成专业版IDEA后,Maven会自动读取同一个settings.xml文件,阿里云源的配置自然会生效。

2) IDEA专业版和社区版共用同一套Maven配置

IDEA(无论社区版还是专业版)默认会优先使用用户级的.m2/settings.xml ,其次才会用内置Maven的全局settings.xml


相关推荐
高斯林.神犇7 小时前
maven专题
maven
.格子衫.8 小时前
Maven的下载与安装
java·maven
Override笑看人生8 小时前
gitlab中maven私有库使用备忘
java·gitlab·maven
原来是小珠呀8 小时前
Maven介绍安装与IDEA使用(JavaWeb)
pycharm·maven·intellij-idea
不知几秋8 小时前
配置JDK和MAVEN
java·开发语言·maven
星光一影8 小时前
SpringBoot+Vue3无人机AI巡检系统
人工智能·spring boot·websocket·mysql·intellij-idea·mybatis·无人机
多多*18 小时前
分布式系统中的CAP理论和BASE理论
java·数据结构·算法·log4j·maven
合作小小程序员小小店19 小时前
web网页开发,在线考勤管理系统,基于Idea,html,css,vue,java,springboot,mysql
java·前端·vue.js·后端·intellij-idea·springboot
合作小小程序员小小店1 天前
web网页开发,在线%就业信息管理%系统,基于idea,html,layui,java,springboot,mysql。
java·前端·spring boot·后端·intellij-idea