网站程序0day,百度自媒体平台,搜索附近离得近的,五屏网站建设平台目录
Maven简介
Maven快速上手
Maven详细介绍
Maven工作机制
Maven安装及配置
使用IDEA创建Maven Web工程 Maven简介
Maven是 Apache 开源组织奉献的一个开源项目#xff0c;可以翻译为“专家”或“内行”。
Maven 的本质是一个项目管理工具#xff0c;将项目开发和管…目录
Maven简介
Maven快速上手
Maven详细介绍
Maven工作机制
Maven安装及配置
使用IDEA创建Maven Web工程 Maven简介
Maven是 Apache 开源组织奉献的一个开源项目可以翻译为“专家”或“内行”。
Maven 的本质是一个项目管理工具将项目开发和管理过程抽象成一个项目对象模型POM project object model通过简单的配置和命令就可以完成项目的构建管理和依赖管理。 使用 Maven 可以实现自动化构建、测试、打包和发布项目大大提高了开发效率和质量。 简要概述我们使用Idea构建Java项目中若是要使用Mysql数据库要导包mysql-connector-java.jar JDBC驱动或者其他封装好的包常见方式是去官网下载JAR文件导入项目中。采用Maven能够取消这一步骤通过POM.xml文件进行管理依赖。
Maven官网Maven – Welcome to Apache Maven
Maven快速上手
第一次使用Maven需要到官网下载Maven 后续不再使用这一步骤类似JDK的下载
Maven下载
下载地址Maven – Download Apache Maven当前最新版本是3.9.9选择apache-maven-3.9.9-bin.zip压缩包下载到本地。 Maven安装
只需要将Maven解压到非中文、没有空格的目录。比如解压到D盘那么Maven安装目录就是D:\apache-maven-3.9.9 IDEA集成Maven
通过File--Settings--BuildExecutionDeployment--Build Tools--Maven可以配置当前工程的Maven。通过File--New Projects Setup--Settings for New Projects--BuildExecutionDeployment--Build Tools--Maven可以为后面新创建的所有工程自动配置Maven。 IDEA中创建Maven工程
通过File--New--Project--Maven Archetype可以使用“mvnarchetype:generate”命令创建Maven工程。
输入工程名称选择工程在电脑中的存放位置以及JDK版本。选择Archetype工程原型架构不同的架构创建的工程结构是不同的。
选择apache.maven.archetypes:maven-archetype-quickstart可以创建Java工程。选择org.apache.maven.archetypes:maven-archetype-webapp可以创建Web工程。
输入Maven工程的GAV三坐标。
GroupId公司或组织名一般使用倒序的域名如com.taobao或者com.cg。ArtifactId一个项目或者是项目中的一个模块名称默认和工程名称相同。
pom.xml文件内容解读
最基本的内容包含 一、xml文件声明
?xml version1.0 encodingUTF-8?二、根元素
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd三、子元素
modelVersion4.0.0/modelVersiongroupIdorg.example/groupIdartifactIdmybatis/artifactIdversion0.0.1-SNAPSHOT/version!--添加依赖GAV三坐标 具体的可以让AI帮你添加--
!--常用依赖mybatis、spring boot、junit、mysql、--
dependencies
dependencygroupIdcom.mysql/groupIdartifactIdmysql-connector-j/artifactIdversion8.4.0/version
/dependency
/dependencies/project
详细说明POM.XML文档
?xml version1.0 encodingUTF-8?
!--XML文档声明--
!--拓展知识XML文件 可扩展标记语言--
!--被设计用来存储和传输数据。XML文件的结构非常灵活可以自定义标签来描述数据。它被广泛应用于数据交换、配置文件、文档存储等领域。--project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd
!--根元素--
!--project/project标签--
!--作用将该文档内所有的文件都包含其中--
!--XML 命名空间和 Schema 位置
xmlnshttp:...这个属性定义了 XML 文档的默认命名空间指向 Maven 的 POM 4.0.0 规范。这告诉 Maven 这个 pom.xml 文件遵循哪个版本的项目对象模型规范。
xmlns:xsihttp:...这个属性定义了 XML Schema 实例的命名空间它用于提供对 XML Schema 的引用以验证 XML 文档的结构。
xsi:schemaLocationhttp:..这个属性提供了 XML Schema 的位置Maven 使用这个位置来验证 pom.xml 文件的结构是否正确。如果 Maven 无法访问这个 Schema可能是因为网络问题或者链接不正确。--modelVersion4.0.0/modelVersion
!--子元素--
!--modelVersion 元素是必需的并且必须位于文件的顶部作为根 project 元素的直接子元素。--groupIdorg.example/groupIdartifactIdmybatis/artifactIdversion0.0.1-SNAPSHOT/version
!--这三个标签不可省略用于确定Maven项目的唯一标识分别代表--
!--groupId 通常这个值遵循 Java 包命名约定是反向的域名格式。如果一个组织的域名是 example.com那么它的 groupId 可能是 com.example。--
!--artifactId 与 groupId 结合使用以确保在 Maven 仓库中的唯一性。这个值通常反映了项目或构件的名称。--
!--version 版本号通常遵循语义化版本控制Semantic Versioning格式包括主版本号、次版本号、修订号可能还包括预发布版本标识。--namemybatis_2.0/namedescriptionmybatis_2.0/descriptionurlhttp://maven.apache.org/url
--可省代表--
--name 元素定义了项目的名称。--
--description 元素提供了项目的详细描述。--
--url 元素的值可以是任何有效的URL--
--
项目主页的地址
项目的源代码仓库如GitHub、GitLab或Bitbucket
项目的文档网站
项目的开发者论坛或邮件列表
项目的bug跟踪系统
--dependencies!--MyBatis框架依赖--dependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversion3.5.16/version/dependency!--MySQL驱动依赖--dependencygroupIdcom.mysql/groupIdartifactIdmysql-connector-j/artifactIdversion8.4.0/version/dependency/dependencies
!--依赖的GAV三坐标 dependencies 嵌套 dependency--/project 其他标签
父类POM
parentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion3.3.4/versionrelativePath/ !-- lookup parent from repository --
/parent
属性 java.version的版本号
propertiesjava.version17/java.version
/properties
定义项目构建过程
buildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins
/build
Maven详细介绍
Maven工作机制
首先我们需要在电脑中安装MavenMaven核心程序Maven中提供了很多Maven命令来完成项目的构建管理。我们需要使用Maven命令创建Maven工程在Maven工程中有一个pom.xml文件pom.xml是Maven工程的核心配置文件通过该配置文件我们可以完成Jar包依赖、项目构建等的配置。
比如我们需要在工程中使用MySQL驱动的Jar包我们只需要在pom.xml中完成添加如下依赖配置
dependencygroupIdcom.mysql/groupIdartifactIdmysql-connector-j/artifactIdversion8.4.0/version
/dependency
groupId组ID、artifactId(工件ID)和version版本是Jar包依赖的GAV三坐标GAV三坐标就相当于人的姓名起到一个标识的作用。Maven工程在构建的过程中会依据pom.xml中的GAV三坐标首先从本地仓库中下载jar包添加到工程中如果本地仓库没有那么会自动默认去中央仓库Central Repository:下载Jar包到本地仓库中然后添加到工程中。中央仓库中几乎存放了所有的第三方Jar包依赖。通过地址https://mvnrepository.com/可以查询所有Jar包版本的GAV三坐标。
但是中央仓库是部署在国外的访问速度较慢并且不稳定因此我们配置使用阿里云镜像仓库https://maven.aliyun.com/repository/central速度更快更稳定。 Maven安装及配置
【任务】完成电脑中Maven的下载、安装和配置。
Maven下载
下载地址Maven – Download Apache Maven当前最新版本是3.9.9选择apache-maven-3.9.9-bin.zip压缩包下载到本地。 Maven安装
只需要将Maven解压到非中文、没有空格的目录。比如解压到D盘那么Maven安装目录就是D:\apache-maven-3.9.9 Maven配置
找到Maven安装目录下的conf/settings.xml配置文件并进行编辑。 配置本地仓库
在settings节点下加入localRepository节点配置本地仓库位置默认的本地仓库地址为${user.home}/.m2/repository。 !--配置本地仓库位置--
localRepositoryD:\maven\repository/localRepository
配置阿里云远程仓库
在mirrors节点下加入mirror节点配置阿里云远程仓库镜像地址。 !--配置阿里云远程镜像仓库--mirroridalimaven/idmirrorOfcentral/mirrorOfnamealiyun maven/nameurlhttps://maven.aliyun.com/repository/central/url/mirror
配置JDK版本
由于Maven软件是使用java语言编写的程序其运行需要JDK环境支持因此在安装Maven环境之前一定要安装JDK建议JDK17版本如果电脑中未安装JDK17安装与配置参考安装JDK17并配置Java环境变量_jdk17配置环境变量-CSDN博客。
Maven默认运行JDK版本是1.4显然不能满足我们的需求我们需要在Maven配置文件中设置JDK版本。
在Maven配置文件中找到profiles标签加入profile标签具体指定配置id、JDK版本和编译配置。同时加入activeProfiles标签加入activeProfile标签指定配置id激活配置。 profiles!-- 配置JDK17版本 --profileidjdk-17/idactivationactiveByDefaulttrue/activeByDefaultjdk17/jdk/activationproperties maven.compiler.source17/maven.compiler.source maven.compiler.target17/maven.compiler.targetmaven.compiler.compilerVersion17/maven.compiler.compilerVersion /properties/profile/profiles!-- 激活jdk配置 --activeProfilesactiveProfilejdk-17/activeProfile/activeProfiles
环境变量配置
1配置MAVEN_HOME 2编辑Path添加一行配置“%MAVEN_HOME%\bin” Maven命令
Maven配置完成后就可以使用Maven命令进行项目构建和依赖管理了。 命令 作用 说明 mvn -v 查看Maven当前版本信息 使用mvn –v或mvn –version命令执行后的结果一样。 mvnarchetype:generate 创建Maven项目 执行命令后提示输入Maven坐标等信息。 mvn clean 删除target目录 target目录是Maven的输出目录主要存放生成的class、jar、war等文件。 mvn compile 编译程序 编译后的文件将存放在taget/classes目录中。 mvn test-complie 编译测试程序 编译的测试文件将存放在target/test-classes目录中。 mvn test 执行程序测试 测试报告将存放在target/surefire-reports目录中。 mvn package 打包项目 打包后的结果jar或war包将存放在target目录中。 mvn install 安装jar包到本地仓库 将打包好的jar包存放到Maven本地仓库中。
打开cmd命令行窗口输入命令mvn-v可以查看当前配置的Maven版本号。 其他的命令我们通过IDEA集成Maven进行使用。
IDEA集成Maven进行项目构建
【任务】使用IDEA集成Maven并使用Maven命令完成工程的创建、编译、清理和打包。
IDEA集成Maven
通过File--Settings--BuildExecutionDeployment--Build Tools--Maven可以配置当前工程的Maven。通过File--New Projects Setup--Settings for New Projects--BuildExecutionDeployment--Build Tools--Maven可以为后面新创建的所有工程自动配置Maven。 创建Maven工程
通过File--New--Project--Maven Archetype可以使用“mvnarchetype:generate”命令创建Maven工程。
输入工程名称选择工程在电脑中的存放位置以及JDK版本。选择Archetype工程原型架构不同的架构创建的工程结构是不同的。
选择apache.maven.archetypes:maven-archetype-quickstart可以创建Java工程。选择org.apache.maven.archetypes:maven-archetype-webapp可以创建Web工程。
输入Maven工程的GAV三坐标。
GroupId公司或组织名一般使用倒序的域名如com.taobao或者com.cg。ArtifactId一个项目或者是项目中的一个模块名称默认和工程名称相同。Version版本号默认为1.0-SNAPSHOT。
点击Create创建按钮创建Maven工程。
Maven工程结构
创建好的Maven工程如下所示
src/main/java源代码目录存放开发者编写的实现系统功能的源代码。src/test/java测试代码目录存放对源代码进行测试的测试脚本。pom.xmlMaven核心配置文件进行GAV坐标配置、Jar包依赖配置、项目构建配置等。External Libraries依赖的外部组件库比如JDK依赖的第三方的Jar包等。 pom.xml文件内容解读 project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersion!--配置工程的GAV三坐标--groupIdcom.cg/groupIdartifactIdmaven-project-java/artifactIdversion1.0-SNAPSHOT/version!--配置打包方式java工程打成jar包web工程打成war包--packagingjar/packagingnamemaven-project-java/nameurlhttp://maven.apache.org/urlpropertiesproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/properties!--配置Jar包依赖--dependenciesdependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion3.8.1/versionscopetest/scope/dependency/dependencies
/project
添加Jar包依赖
比如我们在工程中添加MySQL驱动依赖需要在pom.xml文件中添加mysql-connector-sql依赖配置。
dependencygroupIdcom.mysql/groupIdartifactIdmysql-connector-j/artifactIdversion8.4.0/version
/dependency
依赖添加后一定要记得刷新Maven仓库才能从本地仓库或者远程仓库中下载Jar包添加到工程外部资源库中。 工程编译、清理、打包和安装
可以通过Maven操作面板执行Maven命令完成Maven工程的编译、清理和打包操作。 compile编译命令自动生成target目录target目录是Maven工程的输出目录,它包含了编译、测试、打包等构建过程生成的所有文件。clean清理命令删除target目录。package打包命令将打包后的结果jar或war包存放在target目录中。install安装命令 将打包后的jar包上传到maven本地仓库。
在Maven工程中进行单元测试
单元测试
单元测试是指对软件中的最小可测试单元进行检查和验证。至于“单元”的大小或范围并没有一个明确的标准“单元”可以是一个函数、方法、类、功能模块或者子系统。
单元测试属于白盒测试范畴一般由开发人员进行来做便于及时发现代码bug保证代码质量。
JUnit单元测试框架由Erich Gamma和Kent Beck编写的一个回归测试框架Regresion Testing Framework主要用于Java语言程序的单元测试。
目前最新版本为JUnit5其官网地址是 https://junit.org/。
JUnit5简单使用
在Maven工程中添加JUnit5框架依赖。
在pom.xml文件中添加JUnit5的Maven坐标信息。其中scope表示依赖作用的范围依赖作用的范围可以分为编译阶段、测试阶段和运行阶段。scope的值为test表示该依赖只在测试阶段可用也就是在src/test文件夹下可用scope的默认值是compile表示该依赖在编译、测试和运行阶段都可用。具体内容如下 !-- JUnit5的Maven坐标 --
dependencygroupIdorg.junit.jupiter/groupIdartifactIdjunit-jupiter-api/artifactIdversion5.10.2/versionscopetest/scope
/dependency
在工程中编写JUnit测试方法
JUnit为我们提供了一个Test注解用来指定当前方法将作为测试用例方法使用该方法可以直接运行。
Test注解标识该方法是一个测试方法可以执行Test注解的方法必须是publicvoid非静态不带参数。
在IDEA的src/main/test/java目录下添加测试类在测试类中定义一个测试方法方法上使用Test注解方法体中编写测试内容脚本。具体内容如下
public class AppTest {Testpublic void test1(){//编写测试脚本System.out.println(执行测试脚本);}
}
运行测试方法执行测试脚本
单击方法前面的运行按钮运行测试方法 使用IDEA创建Maven Web工程
【任务】使用IDEA创建Maven Web工程在工程中新建Servlet处理HTTP请求并将工程发布到Tomcat中运行。
创建Maven Web工程
通过File--New--Project--Maven Archetype创建Maven Web工程。
输入工程名称选择工程在电脑中的存放位置以及JDK版本。选择org.apache.maven.archetypes:maven-archetype-webapp可以创建Web工程。输入Maven工程的GAV三坐标。 点击Create创建按钮创建Maven工程。
Maven Web工程结构
src/main/java目录源代码目录java目录需要手动新建src/main/resources目录配置目录该目录用来存放应用的一些配置信息src/main/webapp目录Web应用资源目录可以将jsp/html页面js脚本css样式等资源放在该目录中。src/main/WEB-INF目录Web应用的安全目录包含一个web.xml文件 添加servlet-api依赖
在Web工程中创建Servlet需要servlet-api依赖的支持因此需要首先在pom.xml中添加servlet-api依赖信息。
dependencygroupIdjakarta.servlet/groupIdartifactIdjakarta.servlet-api/artifactIdversion6.1.0/versionscopeprovided/scope
/dependency
scope表示依赖作用的范围依赖作用的范围可以分为编译阶段、测试阶段和运行阶段。scope的值为provided表示该依赖只在编译和测试阶段可用在运行阶段不可用因为servlet-api在运行时由tomcat容器提供就不需要再重复引入可以防止和tomcat下jar冲突。
注Tomcat10已经全面支持JakartaEE取代了JavaEEJakarta EE是Java EE的继任者。
2018年Oracle(甲骨文)决定将JavaEE移交给开源组织Eclipse基金会但甲骨文不允许开源组织用Java的名号于是Eclipse使用 Jakarta EE这个名字。Jakarta EE中所有的包名都是以jakarta开头。
在工程中创建Servlet
WebServlet(/hello)
public class HelloServlet extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.getWriter().println(Hello,Maven Web);}
}
将工程部署到Tomcat运行并访问Servlet
在IDEA中配置Tomcat并将工程部署到Tomcat中并设置应用上下文路径为“/”启动Tomcat 在浏览器中输入Servlet的访问地址http://localhost:8080/hello