maven学习和maven聚合工程搭建

1.学习maven

maven的概念

项目管理工具 ,对jar进行依赖管理,编译,打包,单元测试,安装,部署,贯穿整个项目

为什么要学maven

要解决的问题:

  • 不同的开发工具开发出来的项目目录结构不一样,导致不能相互导。
  • 每次从svn服务器检出项目因为 jar包太多了导致速度很慢
  • 项目使用的jar包版本每次下载和升级好麻烦,得自己寻找jar包的下载地址,找到了不一定能下,下载下来版本不一定对。

maven使命:

  • ide解耦
  • 统一jar包资源路径
  • 版本管理
  • 统一项目结构
  • 第三方良好的集成

下载地址:
http://maven.apache.org

maven仓库

  • 1、本地仓库 : 相当于缓存。本地仓库存储在本地的磁盘当中,里面存放的是经常使用的jar包。
  • 2、 远程仓库 : 也叫做私服。基本每个公司都会有自己的私服,当本地的磁盘中不存在需要的jar包资源,则会请求私服进行资源下载。
  • 3、 中央仓库 : 远程仓库,由jar专业团队统一维护。

maven的使用

使用maven前需要先配置好jdk

  • 配置环境变量

image.png
image.png
image.png

  • 修改maven的配置文件settings.xml

1.配置本地库的位置
image.png
2.配置阿里云镜像

<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> 

3.配置jdk版本

<profile><id>jdk-1.8</id><activation><activeByDefault>true</activeByDefault><jdk>1.8</jdk></activation><properties><maven.compiler.source>1.8</maven.compiler.source>    <maven.compiler.target>1.8</maven.compiler.target>    <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>   </properties></profile>

idea创建maven项目

建议不用选骨架,可以直接选maven创建项目后自己手动修改pom文件

idea集成maven

一定要全局设计IDEA的Maven配置
image.png
image.png
image.png

什么是gav坐标

image.png
根据gav坐标找对应的jar包。

比如:mysql驱动包
g:mysql
a:mysql-connector-java
v:8.0.22

改pom文件

POM(project object model)是Maven对一个单一项目的描述

  • packaging不写的话,默认是打jar包,对于开发web项目的话,要写成war
 <packaging>war</packaging>
  • 对于web项目的话,要在src下的main下建webapp,然后刷新下maven。

image.png
image.png

  • 写各种jar包依赖

可以去maven中央仓库去搜需要用的jar。网址:https://mvnrepository.com/

  • 对于sql映射文件是跟dao接口在一起的情况,部署项目的时候默认是不会把sql映射文件打进去的,解决如下:

image.png

 <build><resources><resource><directory>src/main/resources</directory></resource><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource></resources>

当然我习惯把sql映射文件单独放到resources下的mapper文件夹的,就不用操心这个问题

将之前的ssm项目改成maven项目
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.jf3q</groupId><artifactId>maven_demo</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.2.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.2.2.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>5.2.2.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.2.2.RELEASE</version></dependency><!--数据库--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.16</version></dependency><dependency><groupId>commons-pool</groupId><artifactId>commons-pool</artifactId><version>1.6</version></dependency><dependency><groupId>commons-dbcp</groupId><artifactId>commons-dbcp</artifactId><version>1.4</version></dependency><!--mybatis--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.1</version></dependency><!--mybatis-spring--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>2.0.3</version></dependency><!--分页--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.3.1</version></dependency><!--jackson--><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.11.1</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>2.11.1</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.11.1</version></dependency><!--junit--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.2</version></dependency><!--文件上传--><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.2.2</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.4</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><!--日志--><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.25</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><!--aop联盟--><dependency><groupId>aopalliance</groupId><artifactId>aopalliance</artifactId><version>1.0</version></dependency><!-- 这个是spring事务控制的jsr包 --><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.6.9</version></dependency><!-- servlet-api --><!--打war包必须用的--><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.0</version><scope>provided</scope></dependency></dependencies></project>

maven的常用命令

  • mvn compile --只编译main目录中的java文件
  • mvn test  测试,运行的是test/java中的代码
  • mvn package 打成 jar/war包,放在项目的target文件夹中
  • mvn install 将开发的模块放入本地仓库,供其他模块使用(放入的位置,是通过gav决定)
  • mvn clean 删除target目录(删除编译文件目录)
  • mvn deploy 将项目部署到Tomcat中,然后即可运行。

执行mvn命令:必须在pom.xml所在目录执行

2.maven聚合工程搭建

概念

多模块开发。多团队协同开发,分布式开发

案例

app项目为例,
image.png
image.png
10个人负责开发管理员端 A队 Tomcat是81端口,10个人负责开发 开发者端 B队 Tomcat是82端口
image.png
其中app-common是公共的,打jar包,dev和admin都要依赖他,要理解maven依赖的传递性。app-dev和app-admin都是打war包,用不同端口的Tomcat跑起来。
admin模块截图
image.png
dev模块截图
image.png

各模块的pom

父级:

 <!--父级,根模块必须配置这个-->
<packaging>pom</packaging>
<!--包含的子模块-->
<modules><module>app-admin</module><module>app-dev</module><module>app-common</module>
</modules>
<!--所有模块都用到的依赖,具有传递性-->
<dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.2.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.2.2.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>5.2.2.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.2.2.RELEASE</version></dependency><!--数据库--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.16</version></dependency><dependency><groupId>commons-pool</groupId><artifactId>commons-pool</artifactId><version>1.6</version></dependency><dependency><groupId>commons-dbcp</groupId><artifactId>commons-dbcp</artifactId><version>1.4</version></dependency><!--mybatis--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.1</version></dependency><!--mybatis-spring--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>2.0.3</version></dependency><!--分页--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.3.1</version></dependency><!--jackson--><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.11.1</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>2.11.1</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.11.1</version></dependency><!--文件上传--><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.2.2</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.4</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><!--日志--><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.25</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><!--aop联盟--><dependency><groupId>aopalliance</groupId><artifactId>aopalliance</artifactId><version>1.0</version></dependency><!-- 这个是spring事务控制的jsr包 --><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.6.9</version></dependency><!-- servlet-api --><!--打war包必须用的--><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.0</version><scope>provided</scope></dependency></dependencies>

common:公共模块,一般是工具类,实体类,dao层

 <packaging>jar</packaging>
<!--本模块独有的依赖-->
<dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.26</version></dependency></dependencies><build><!--防止运行项目的时候dao下的sql映射文件丢失--><resources><resource><directory>src/main/resources</directory></resource><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource></resources></build>

dev:开发者模块

<packaging>war</packaging><!--本模块独有的依赖--><dependencies><!--公共模块引入进来--><dependency><groupId>com.jf3q</groupId><artifactId>app-common</artifactId><version>1.0-SNAPSHOT</version></dependency><!--剩下独有的依赖省略 ,如果有的话可以自行添加--></dependencies>

admin:管理员模块

<packaging>war</packaging><!--本模块独有的依赖--><dependencies><!--公共模块引入进来--><dependency><groupId>com.jf3q</groupId><artifactId>app-common</artifactId><version>1.0-SNAPSHOT</version></dependency><!--剩下独有的依赖省略 ,如果有的话可以自行添加--></dependencies>

作业:

1.把app项目改成单模块的maven项目

2.把app项目改成多模块的maven项目

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/235630.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络通信day5作业

1> 使用select完成TCP客户端程序 客户端: #include<myhead.h>#define FPORT 9999 #define FIP "192.168.125.130"#define KPORT 6666 #define KIP "192.168.125.130"int main(int argc, const char *argv[]) {//创建套接字文件描述符int cfd…

Android: Ubuntu下交叉环境编译常用调试工具demo for lspci命令(ARM设备)

lspci命令交叉环境编译(ARM设备) 交叉编译工具下载&#xff1a; https://releases.linaro.org/components/toolchain/binaries https://releases.linaro.org/components/toolchain/binaries/6.3-2017.05/aarch64-linux-gnu/ lspci命令交叉环境编译(ARM设备)&#xff1a; 1&a…

智能优化算法应用:基于梯度算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于梯度算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于梯度算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.梯度算法4.实验参数设定5.算法结果6.参考文献7.MA…

IDEA中如何创建各种类型的java工程

如果你的工程下面的module没有互相依赖&#xff0c;就相当于是一个小的项目&#xff0c;idea版本不同&#xff0c;细节可能不同 1、普通的Java 工程 在工程上&#xff0c;右键- New - Module&#xff0c;如下&#xff1a; 指明Java工程的名称及使用的JDK版本&#xff1a; 创建…

基于扩散的模糊文本图像超分辨率技术

恢复低分辨率文本图像具有挑战性&#xff0c;特别是对于在现实场景中具有复杂笔画和严重降质的中文文本图像。确保文本的准确性和样式的真实性对于高质量的文本图像超分辨率至关重要。最近&#xff0c;由于扩散模型强大的数据分布建模能力和数据生成能力&#xff0c;在自然图像…

Python---IP 地址的介绍

1. IP 地址的概念 IP 地址就是标识网络中设备的一个地址&#xff0c;好比现实生活中的家庭地址。 网络中的设备效果图: 2. IP 地址的表现形式 说明: IP 地址分为两类&#xff1a; IPv4 和 IPv6 IPv4 是目前使用的ip地址 IPv6 是未来使用的ip地址 IPv4 是由点分十进制组成 …

Pycharm 关闭控制台多余窗口详解(console)

文章目录 1 问题描述2 解决办法2.1 步骤1&#xff1a;编辑配置2.2 步骤2&#xff1a;使用 Python 控制台运行&#xff08;取消勾选&#xff09;2.3 验证&#xff1a;再次运行&#xff0c;多余窗口消失 1 问题描述 2 解决办法 2.1 步骤1&#xff1a;编辑配置 菜单路径&#xf…

anconda常用命令

一、基础指令说明 1、查看anconda版本号 conda --version 2、查看当前已有虚拟环境 conda env list 3、创建新环境 conda create -n classify python3.9 创建一个叫做classify的虚拟环境&#xff0c;其中python等于3.9 4、进入虚拟环境 activate classify 5、安装包 接下来…

5213A 综合数据通信分析仪

5213A 综合数据通信分析仪 数字通信测量仪器 5213A 综合数据通信分析仪是符合标准 PXI/CPCI 总线的模块化便携式仪器&#xff0c;用户可以 根据测试需要选配相应的模块&#xff0c;可选模块包括双端口 RapidIO 模块、双端口 2G FC 模块、双 端口 4G FC 模块、双端口 8G FC 模…

HP服务器idrac设置以及系统安装

HP服务器idrac设置以及系统安装 一、设置管理口的地址和密码1、HP服务器重新界面选择"F9"进入BIOS&#xff0c;设置iLo5(idrac)的IP和用户名密码。2、选择"系统配置"。3、选择"iLO 4"配置程序。4、网络选项是设置idrac管理口的地址&#xff0c;设…

grafana基本使用

一、安装grafana 1.下载 官网下载地址&#xff1a; https://grafana.com/grafana/download官网包的下载地址&#xff1a; yum install -y https://dl.grafana.com/enterprise/release/grafana-enterprise-10.2.2-1.x86_64.rpm官网下载速度非常慢&#xff0c;这里选择清华大…

Linux 操作系统(Vim)

vim 编译器&#xff08;相当于windows中记事本&#xff09; 当在终端窗口直接运行vim命令&#xff0c;会出现以下截图&#xff08;类似手册对vim编译器简单的介绍&#xff09;&#xff1a; vim提供三种基本工作模式&#xff1a; 命令模式(默认模式) 插入模式 末行模式 创建文本…

html之如何设置音频和视频?

文章目录 前言一、音频标签&#xff1a;audio1.audio简介2.常用属性controlsautoplayloop代码演示&#xff1a; 二、视频标签&#xff1a;video1.video2.常用的视频元素controlsautoplayloop代码演示&#xff1a; 总结视频元素总结音频元素总结 前言 html中插入音频和视频的方…

通信UART、I2C、SPI

内部通信UART、I2C、SPI 目录 1.UART 2.I2C 3.SPI 1.UART 全双工异步通信&#xff0c;有两根线发送与接收。 UART串口通信需要两个信号线来实现&#xff0c;一根用于串口发送&#xff0c;另外一根负责串口接收。 一开始高电平&#xff0c;然后拉低表示开始位&#xff0c;…

layui 树组件tree 通过API获取数据

一、简单 var treedata[];tree.render({elem: #addLeftType,id: demoId,data: treedata,showCheckbox: true,oncheck: function(obj){console.log(obj.data); // 得到当前点击的节点数据console.log(obj.checked); // 节点是否被选中console.log(obj.elem); // 得到当前节点元素…

java --- 反射

目录 一、什么是反射&#xff1f; 二、获取 Class对象 的三种方式 三、反射获取构造方法&#xff08;Constructor&#xff09; 四、反射获取成员变量&#xff08;Field&#xff09; 五、反射获取成员方法&#xff08;Method&#xff09; 一、什么是反射&#xff1f; 反射允…

app上架-您的应用在运行时,未同步告知权限申请的使用目的,向用户索取(相机)等权限,不符合华为应用市场审核标准。

上架提示 您的应用在运行时&#xff0c;未同步告知权限申请的使用目的&#xff0c;向用户索取&#xff08;相机&#xff09;等权限&#xff0c;不符合华为应用市场审核标准。 测试步骤&#xff1a;管理-添加-点击二维码&#xff0c;申请相机权限 修改建议&#xff1a;APP在调…

智能优化算法应用:基于非洲秃鹫算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于非洲秃鹫算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于非洲秃鹫算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.非洲秃鹫算法4.实验参数设定5.算法结果6.…

UE4 UE5 一直面向屏幕

一直面相屏幕&#xff0c;方法很简单 新建一个蓝图&#xff0c;如下添加组件&#xff1a; 蓝图如下&#xff1a; Rotation Actor &#xff1a;需要跟随镜头旋转的物体 Update&#xff1a;一个timeline&#xff08;替代event tick 只是为了循环&#xff09; Timeline&#xff…

百年东芝“瞄准”汽车「芯」机遇

在汽车“新四化”大变革的驱动下&#xff0c;汽车半导体市场进入需求暴涨的新周期。 “智能电动汽车所需要的半导体种类和数量正在急剧增加。” 东芝电子分立器件应用技术部经理成栋表示&#xff0c;东芝电子正在加大汽车半导体市场的布局&#xff0c;从而满足汽车电动化、智能…