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


目录
相关文章
|
8天前
|
人工智能 前端开发 Java
基于开源框架Spring AI Alibaba快速构建Java应用
本文旨在帮助开发者快速掌握并应用 Spring AI Alibaba,提升基于 Java 的大模型应用开发效率和安全性。
基于开源框架Spring AI Alibaba快速构建Java应用
|
16天前
|
前端开发 Java 数据库连接
Spring 框架:Java 开发者的春天
Spring 框架是一个功能强大的开源框架,主要用于简化 Java 企业级应用的开发,由被称为“Spring 之父”的 Rod Johnson 于 2002 年提出并创立,并由Pivotal团队维护。
37 1
Spring 框架:Java 开发者的春天
|
24天前
|
Java 关系型数据库 MySQL
Maven——创建 Spring Boot项目
Maven 是一个项目管理工具,通过配置 `pom.xml` 文件自动获取所需的 jar 包,简化了项目的构建和管理过程。其核心功能包括项目构建和依赖管理,支持创建、编译、测试、打包和发布项目。Maven 仓库分为本地仓库和远程仓库,远程仓库包括中央仓库、私服和其他公共库。此外,文档还介绍了如何创建第一个 SpringBoot 项目并实现简单的 HTTP 请求响应。
105 1
Maven——创建 Spring Boot项目
|
27天前
|
Java 关系型数据库 MySQL
如何使用 maven 创建一个 Spring Boot项目
Maven 是一个强大的项目管理工具,通过配置 `pom.xml` 文件自动获取所需的 jar 包,提高开发效率。其核心功能包括项目构建和依赖管理。项目构建支持编译、测试、打包和发布等流程,而依赖管理则通过中央仓库、本地仓库和私有服务器获取和管理项目依赖。示例中展示了如何创建第一个 SpringBoot 项目并实现简单接口。
21 1
如何使用 maven 创建一个 Spring Boot项目
|
16天前
|
Java 数据库连接 开发者
Spring 框架:Java 开发者的春天
【10月更文挑战第27天】Spring 框架由 Rod Johnson 在 2002 年创建,旨在解决 Java 企业级开发中的复杂性问题。它通过控制反转(IOC)和面向切面的编程(AOP)等核心机制,提供了轻量级的容器和丰富的功能,支持 Web 开发、数据访问等领域,显著提高了开发效率和应用的可维护性。Spring 拥有强大的社区支持和丰富的生态系统,是 Java 开发不可或缺的工具。
|
16天前
|
JSON Java Maven
实现Java Spring Boot FCM推送教程
本指南介绍了如何在Spring Boot项目中集成Firebase云消息服务(FCM),包括创建项目、添加依赖、配置服务账户密钥、编写推送服务类以及发送消息等步骤,帮助开发者快速实现推送通知功能。
42 2
|
20天前
|
存储 人工智能 Java
将 Spring AI 与 LLM 结合使用以生成 Java 测试
AIDocumentLibraryChat 项目通过 GitHub URL 为指定的 Java 类生成测试代码,支持 granite-code 和 deepseek-coder-v2 模型。项目包括控制器、服务和配置,能处理源代码解析、依赖加载及测试代码生成,旨在评估 LLM 对开发测试的支持能力。
31 1
|
22天前
|
Java BI 调度
Java Spring的定时任务的配置和使用
遵循上述步骤,你就可以在Spring应用中轻松地配置和使用定时任务,满足各种定时处理需求。
108 1
|
2天前
|
安全 Java 测试技术
Java开发必读,谈谈对Spring IOC与AOP的理解
Spring的IOC和AOP机制通过依赖注入和横切关注点的分离,大大提高了代码的模块化和可维护性。IOC使得对象的创建和管理变得灵活可控,降低了对象之间的耦合度;AOP则通过动态代理机制实现了横切关注点的集中管理,减少了重复代码。理解和掌握这两个核心概念,是高效使用Spring框架的关键。希望本文对你深入理解Spring的IOC和AOP有所帮助。
7 0
|
24天前
|
Java Apache Maven
Java/Spring项目的包开头为什么是com?
本文介绍了 Maven 项目的初始结构,并详细解释了 Java 包命名惯例中的域名反转规则。通过域名反转(如 `com.example`),可以确保包名的唯一性,避免命名冲突,提高代码的可读性和逻辑分层。文章还讨论了域名反转的好处,包括避免命名冲突、全球唯一性、提高代码可读性和逻辑分层。最后,作者提出了一个关于包名的问题,引发读者思考。
Java/Spring项目的包开头为什么是com?