2:Maven-Java Spring

简介: 2:Maven-Java Spring

2.1 Maven介绍

Maven是Apache 下的一个纯 Java 开发的开源项目。基于项目对象模型(缩写:POM)管理一个项目的构建、依赖、报告和文档等步骤

  • 构建工具,实现自动化构建,跨平台,对外提供一致的操作接口
  • 依赖管理工具和项目信息管理工具,还提供了中央仓库
  • 于项目目录结构、测试用例命名方式等内容,提倡使用一个共同的标准规则

Maven会自动根据dependency中的依赖配置,在中央仓库下载相关依赖包到本地Maven库,本地Maven库默认是用户目录的.m2目录

Maven仓库:https://mvnrepository.com/

2.2 标准目录结构

目录 用途
${basedir} 存放pom.xml和所有的子目录
${basedir}/src/main/java 项目的java源代码
${basedir}/src/main/resources 项目的资源,比如说property文件,springmvc.xml
${basedir}/src/test/java 项目的测试类,比如说Junit代码
${basedir}/src/test/resources 测试用的资源
${basedir}/src/main/webapp/WEB-INF web应用文件目录,web项目的信息,比如存放web.xml、本地图片、jsp视图页面
${basedir}/target 打包输出目录
${basedir}/target/classes 编译输出目录
${basedir}/target/test-classes 测试编译输出目录
Test.java Maven只会自动运行符合该命名规则的测试类
~/.m2/repository Maven默认的本地仓库目录位置

2.3 POM

POM( Project Object Model,项目对象模型 ) 是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖等,Maven 会在当前目录中查找并读取POM文件,获取所需的配置信息,然后执行目标,POM 中可以指定以下配置

  • 项目依赖
  • 插件
  • 执行目标
  • 项目构建 profile
  • 项目版本
  • 项目开发者列表
  • 相关邮件列表信息

父(Super)POM是 Maven 默认的 POM

  • 所有的 POM 都继承自一个父 POM(无论是否显式定义了这个父 POM)
  • 包含了一些可以被继承的默认设置,可以用Show Effective POM看到最终有效的POM定义

例如在POM文件中定义继承Spring-boot-starter-parent

<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>2.1.6.RELEASE</version>
  <relativePath/> <!-- lookup parent from repository -->
</parent>

例如在插件中采用SpringBoot的插件来编译打包应用

<build>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
  </plugins>
</build>

2.4 Maven生命周期

三个标准生命周期

  • clean:项目构建前的清理工作,删除前一次构建在target文件夹下生成 的各个Jar包等
  • default:构建,包括项目的编译,测试,打包,安装,部署等等
  • site:生成项目报告,发布站点,Maven可以根据pom所包含的信息 生成一个站点,方便团队交流和发布项目信息

2.5 Maven插件

Maven 实际上是一个依赖插件执行的框架,每个任务实际上是由插件完成。每个插件可以完成多个功能称为插件目标(Plugin Goal),Maven插件是阶段的内置绑定的

插件目标 描述
spring-boot:run 运行Spring Boot应用
spring-boot:repackage 重新打包jar/war包为可执行包
spring-boot:help 展示spring-boot-maven-plugin的帮助信息
spring-boot:start 启动Spring应用程序,和run目标不同,该目标不会阻塞,并且允许其他目标来操作应用程序
spring-boot:stop 停止使用start目标启动的spring应用程序,通常在测试套件 完成后被调用

Clean生命周期

阶段 内置绑定的插件目标
clean maven-clean-plugin:clean

Default生命周期(当packaging的值是jar/war)

阶段 内置绑定的插件目标
process-resource maven-resources-plugin:resources
compiler maven-compiler-plugin:compile
process-test-resources maven-resources-plugin:testResources
test-compile maven-compiler-plugin:testCompile
test maven-surefire-plugin:test
package maven-jar-plugin:jar/maven-war-plugin:war
install maven-install-plugin:install
deploy maven-deploy-plugin:deploy

Default生命周期(当packaging的值是pom)

阶段 内置绑定的插件目标
install maven-install-plugin:install
deploy maven-deploy-plugin:deploy

site生命周期

阶段 内置绑定的插件目标
site maven-site-plugin:site
site-deploy maven-site-plugin:deploy


目录
相关文章
|
27天前
|
人工智能 Java API
构建基于Java的AI智能体:使用LangChain4j与Spring AI实现RAG应用
当大模型需要处理私有、实时的数据时,检索增强生成(RAG)技术成为了核心解决方案。本文深入探讨如何在Java生态中构建具备RAG能力的AI智能体。我们将介绍新兴的Spring AI项目与成熟的LangChain4j框架,详细演示如何从零开始构建一个能够查询私有知识库的智能问答系统。内容涵盖文档加载与分块、向量数据库集成、语义检索以及与大模型的最终合成,并提供完整的代码实现,为Java开发者开启构建复杂AI智能体的大门。
762 58
|
15天前
|
消息中间件 缓存 Java
Spring框架优化:提高Java应用的性能与适应性
以上方法均旨在综合考虑Java Spring 应该程序设计原则, 数据库交互, 编码实践和系统架构布局等多角度因素, 旨在达到高效稳定运转目标同时也易于未来扩展.
74 8
|
1月前
|
监控 Java 数据库
从零学 Dropwizard:手把手搭轻量 Java 微服务,告别 Spring 臃肿
Dropwizard 整合 Jetty、Jersey 等成熟组件,开箱即用,无需复杂配置。轻量高效,启动快,资源占用少,内置监控、健康检查与安全防护,搭配 Docker 部署便捷,是构建生产级 Java 微服务的极简利器。
134 2
|
2月前
|
前端开发 Java 开发者
Java新手指南:在Spring MVC中使用查询字符串与参数
通过结合实际的需求和业务逻辑,开发者可以灵活地利用这些机制,为用户提供更丰富而高效的Web应用体验。
99 15
|
3月前
|
JSON 前端开发 Java
Java新手指南:如何在Spring MVC中处理请求参数
处理Spring MVC中的请求参数是通过控制器方法中的注解来完成的。这些注解包括 `@RequestParam`, `@PathVariable`, `@ModelAttribute`, `@RequestBody`, `@RequestHeader`, `@Valid`, 和 `@RequestMapping`。使用这些注解可以轻松从HTTP请求中提取所需信息,例如URL参数、表单数据或者JSON请求体,并将其转换成Java对象以供进一步处理。
327 17
|
3月前
|
安全 Java 微服务
Java 最新技术和框架实操:涵盖 JDK 21 新特性与 Spring Security 6.x 安全框架搭建
本文系统整理了Java最新技术与主流框架实操内容,涵盖Java 17+新特性(如模式匹配、文本块、记录类)、Spring Boot 3微服务开发、响应式编程(WebFlux)、容器化部署(Docker+K8s)、测试与CI/CD实践,附完整代码示例和学习资源推荐,助你构建现代Java全栈开发能力。
436 0
|
2月前
|
Cloud Native Java API
Java Spring框架技术栈选和最新版本及发展史详解(截至2025年8月)-优雅草卓伊凡
Java Spring框架技术栈选和最新版本及发展史详解(截至2025年8月)-优雅草卓伊凡
421 0
|
4月前
|
IDE Java 数据库连接
解决Java环境中无法识别org.mybatis.spring.annotation.MapperScan的问题。
祝你好运,在这场MyBatis的魔法冒险中获得胜利!记住,魔法书(官方文档)永远是你最好的朋友。
345 18