【Maven】Maven 高级应用
Maven 高级应用
Maven 基础
Maven 是一个项目管理工具,它有如下好处:
- 节省磁盘空间
- 可以一键构建
- 可以跨平台使用
- 依赖传递和管理,提高开发效率
一键构建:Maven 自身集成了 Tomcat 插件,可以对项目进行编译、测试、打包、安装、发布等操作。
依赖传递和管理:Maven工程真正的 jar 包放置在仓库中,项目中只需要配置上 jar 包的坐标即可。坐标的书写规范,groupId 公司或组织域名的倒序,artifactId 项目名或模块名,version 版本号
坐标示例:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.4</version>
</dependency>
仓库的种类和关系:
- 分为本地仓库,远程仓库(私服),中央仓库
- 启动一个 Maven 工程的时候,pom.xml 会去本地仓库寻找对应的 jar 包,默认情况下,如果本地仓库没有对应的 jar 包,Maven 工程会先私服(如果有)下载 jar 包到本地,如果没有私服,则会从 中央仓库 下载 jar 包到本地
Maven 依赖的作用域:
compile默认值,参与当前项目的编译、测试、运行等周期,是一个比较强的依赖,会被打包到最终的 artifact 中。provided假定对应的依赖会由运行这个应用的 JDK 或者容器来提供,例如 ServletAPI 和 数据库连接。理论上参与编译、测试、运行等周期,不会被打包到最终的 artifact 中。runtime参与测试、运行期等周期,不参与项目的编译,会被打包到最终的 artifact 中。test参与测试工作过程中的测试和执行,不会被打包到最终的 artifact 中。system和 provide 类似,唯一的区别在于它需要使用者告诉 Maven 如何去找到这个依赖。import从其它的 pom 文件中导入依赖设置,它只在dependencyManagement元素下使用,表示从其他 pom 中导入 dependency 的配置。
Maven 常用命令:
compile编译源代码test运行应用程序中的单元测试package依据项目生成 jar 包install在本地 Repository 中安装 jar 包deploy将 jar 包 上传到私服clean清除目标目录中的生成结果
Maven 生命周期:
- 清理生命周期 在开始真正的项目构建之前进行一些清理工作。
- 默认生命周期 构建项目的核心部分,包括编译、测试、打包、部署等。
- 站点生命周期 生成项目报告、站点,发布站点。
传统构建工程
定义项目 pom.xml
DAO 层
DAO 层 大致步骤为:
- 实体类:
- 持久层接口:
- DAO 层 Spring 配置文件:
- 单元测试:
Service 层
Service 层 大致步骤为:
- 业务层接口:
- 业务层接口实现类:
- Service 层 Spring 配置文件:
- 单元测试:
Web 层
Web 层 大致步骤为:
- 控制器类:
- SpringMVC 配置文件:
- web.xml 配置文件:
JSP 页面
运行和调试
添加 tomcat7 插件,直接点击 run 即可
<build>
<plugins>
<!-- 添加 tomcat7 插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<path>/</path>
<port>8080</port>
</configuration>
</plugin>
</plugins>
</build>
分模块构建工程
使用 IDEA 新建一个 Maven 工程,选择 maven-archetype-webapp
- 创建 ssm_parent 父工程(打包方式选择 pom,必须的)
- 创建 ssm_web 子模块(打包方式是 war 包)
- 创建 ssm_service 子模块(打包方式是 jar 包)
- 创建 ssm_dao 子模块(打包方式是 jar 包)
- 创建 ssm_domain 子模块(打包方式是 jar 包)
- web 依赖于 service,service 依赖于 dao,dao 依赖于 domain
- 在 ssm_parent 的 pom.xml 文件中引入坐标依赖

这就是继承和聚合,通常继承和聚合同时使用。继承,创建一个 parent 工程将所需的依赖都配置在 pom 中。聚合,聚合多个模块运行。
继承是为了消除重复,如果将 dao、service、web 分开创建独立的工程则每个工程的 pom.xml 文件中的内容存在重复,比如:设置编译版本、锁定 spring 的版本等,可以将这些重复的配置提取出来在父工程的 pom.xml 中定义。
项目开发通常是分组分模块开发,每个模块开发完成要运行整个工程需要将每个模块聚合在一起运行,比如:dao、service、web 三个工程最终会打一个独立的 war 运行。
运行和调试
启动方式一:本地 Tomcat 启动
这种方式需要注意选择正确的 Artifacts,比如该项目就应该选择 web 模块。
启动方式二:Tomcat 插件 启动 root,直接点击 run 即可
启动方式三:Tomcat 插件 启动 web 模块,需要先 root install
总结和练习
【Maven】Maven 高级应用的更多相关文章
- [Maven]Maven 那点事儿
0. 前言 Jason Van Zyl,在 Java 十大风云人物排行榜上或许会看到他. 这兄弟是干嘛的? 他就是 Maven 的创始人,人们都尊称他为"Maven 他爸". 毋庸 ...
- Maven - Maven速成
Maven Maven是一个项目构建和管理工具,有助于开发者快速完成项目的配置,快速建立开发环境,从而提高开发效率. 管理项目构建(build)的生命周期(清理.编译.测试.打包.发布.部署.报告等) ...
- 三、maven学习-高级
maven父子工程
- maven 一些高级用法命令
发布本地jar到私服 命令 mvn deploy:deploy-file -Dmaven.test.skip=true -Dfile=D:\Downloads\OJDBC-Full\ojdbc6.ja ...
- [Maven]Maven入门教程
概念 Maven是什么 Maven 是一个项目管理工具.它负责管理项目开发过程中的几乎所有的东西. 版本 maven有自己的版本定义和规则 构建 maven支持许多种的应用程序类型,对于每一种支持的应 ...
- [Maven]Maven安装简述
maven安装简述 1检查jdk安装 1.1cmd输入echo %JAVA_HOME%检查JAVA_HOME是否指向了正确的jdk安装目录 1.2cmd输入java-version检查window是否 ...
- [Maven]Maven非常详细完整的教程
请参考:http://blog.csdn.net/u012152619/article/category/6239920 第四部分已看完 另外也可参看简书:http://www.jianshu.com ...
- [Maven]Maven详解
转自:http://www.cnblogs.com/hongwz/p/5456578.html 一.前言 以前做过的项目中,没有真正的使用过Maven,只知道其名声很大,其作用是用来管理jar ...
- [maven] maven变量
Maven内置变量说明: $${project.basedir}或{basedir} 项目根目录,即包含pom.xml文件的目录 ${project.version}或${version}表示项目版本 ...
- Maven——Maven核心概念
原文:http://www.cnblogs.com/xdp-gacl/p/4051819.html 一.Maven坐标 1.1.什么是坐标? 在平面几何中坐标(x,y)可以标识平面中唯一的一点. 1. ...
随机推荐
- ASP自动刷新页面的实现方法总结
1) <meta http-equiv="refresh" content="10"> 10表示间隔10秒刷新一次 2) <script> ...
- HuangB2ydjm
Hi! 我现在呢还是学生,想想初中的同学都结婚生子了,自己,嗯.(啊!!!) 本科以及硕士读的都是应用统计 在这里请广大网友多多指教了! 如果有机会的话,大家可以一起造轮子 you can catch ...
- 博流BL602&BL604开发板介绍
在2020松山湖论坛上,博流智能科技(南京)有限公司销售副总裁刘占领介绍了基于RISC-V核的低功耗.高可靠Wi-Fi+BLE二合一SoC芯片BL602.主要应用领域包括人工智能与工业互联网,特别是电 ...
- C++异常之六 异常处理的基本思想
异常处理的基本思想 C++的异常处理机制使得异常的引发和异常的处理不必在同一个函数中,这样低沉的函数可以着重解决具体问题,而不必过多的考虑异常的处理.上层调用者可以再适当的位置设计对不同类型异常的处理 ...
- 在Chrome、Firefox等高版本浏览器中实现低延迟播放海康、大华RTSP
一.背景 现在到处是摄像头的时代,随着带宽的不断提速和智能手机的普及催生出火热的网络直播行业,新冠病毒的大流行又使网络视频会议系统成为商务会议的必然选择,因此RTSP实时视频流播放及处理不再局限于安防 ...
- 07-flask-使用sqlalchemy
代码 from flask import Flask, render_template from sqlalchemy import create_engine from sqlalchemy.ext ...
- 谁再问Servlet的问题,我就亲自上门来教学了
1. 概述 在这篇简短的文章中,我们将从概念上理解什么是servlet 和 servlet 容器以及它们是如何工作的. 同时,还能在请求.响应.会话对象.共享变量和多线程的上下文中看到它们的身影. 2 ...
- Spark内核-部署模式
Master URL Meaning local 在本地运行,只有一个工作进程,无并行计算能力. local[K] 在本地运行,有K个工作进程,通常设置K为机器的CPU核心数量. local[*] 在 ...
- MyBatisPlus-常用注解
一.@TableName 映射数据库的表名 package com.md.entity; import com.baomidou.mybatisplus.annotation.*; import co ...
- phpStudy后门分析及复现
参考文章:https://blog.csdn.net/qq_38484285/article/details/101381883 感谢大佬分享!! SSRF漏洞学习终于告一段落,很早就知道phpstu ...