maven
1.maven有什么用
svn:版本管理工具。
maven:项目管理工具(创建,管理项目依赖项,编译,测试,打包,部署),原来是基于ide集成开发工具来管理项目,现在基于maven工具来管理项目。ant,maven,gradle
maven运行机制:
maven中央服务器,统一管理所有依赖项,部署web服务对外提供接口;
企业nexus搭建maven私服,连接mavne中央服务器;
开发人员安装maven客户端,配置企业私服镜像,默认连接中央服务器,配置本地仓库;
开发人员使用ide工具,关联本机maven客户端,在ide环境下操作maven客户端指令;
2.安装maven客户端
机器必须有jdk环境,因为maven基于java语言的。
1>解压
2>配置环境变量
3>配置settings.xml
本地仓库:<localRepository>D:\maven360\repository</localRepository>
镜像:<mirror>
<id>nexus-javasm</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://192.168.20.252:8081/repository/maven-public/</url>
</mirror>
3.idea关联maven客户端
file-settings-maven:关联本地的maven客户端
file-other Settings-defaultSetting-maven
如果2020版本的idea,需要在manen-runner-deleate 。。。。to maven勾选复选框。
4.创建maven工程
选择create from archetype,选择maven官方骨架,org.apache.maven开头的骨架。
quickstart骨架表示java工程
webapp骨架表示web工程.
问题:创建出来的工程缺失目录,需要自己补全
src/main/java:源码目录
src/main/resources:配置文件目录
src/main/webapp:web资源目录
src/test/java:测试类目录
pom.xml:maven项目的核心配置文件
5.认识pom.xml配置
- 1.当前项目的基本坐标信息
<groupId>com.javasm</groupId>
<artifactId>0115ssm</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging><!--表示当前项目类型,java,web,pom父工程-->
- 2.当前项目依赖插件的配置信息
<properties>
<!--maven-resources-plugin插件配置,该插件默认加载src/main/resources下的配置文件-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!--maven-compiler-plugin插件配置jdk版本,对src/main/java下的java文件进行编译-->
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
- 3.当前项目源码的依赖jar包信息
maven优势:管理了jar包之间的依赖项,会自动导入底层依赖的jar包
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.9.RELEASE</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-jcl</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
注意点1:如果自动引入的依赖不需要,可以通过exclusions标签进行排除jar包;
注意点2:可以通过scope子标签设置依赖项的生效范围,test(参与测试),compile(参与打包,默认),provided(不参与打包)
- 4.当前项目输出物的配置插件,配置名称
<build>
<!--jar包名称-->
<finalName>0115maven1</finalName>
</build>
6.maven的相关操作命令:
clean:清理target目录
compiler:编译源代码,输出配置文件;
test:执行测试文件
package:项目打包
install:项目打包并安装本地仓库
deploy:项目打包并安装本地仓库并部署远程仓库
7.运行maven工程
- 方法1:部署项目到本地tomcat,启动;
- 方法2:使用内嵌的应用服务器。(tomcat,jetty),把服务器内嵌项目里,使用开发时候使用。
<build>
<plugins>
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.4.28.v20200408</version>
<configuration>
<httpConnector>
<port>8081</port>
</httpConnector>
<webApp>
<contextPath>/</contextPath>
</webApp>
</configuration>
</plugin>
</plugins>
</build>
8.创建ssm项目
在pom文件中加入ssm项目需要的各种依赖。
注意点1:类似于spring各种依赖,版本建议提取到properties标签下进行统一版本管理。
注意点2:maven官方web工程骨架的web.xml是错的,需要去tomcat或旧工程下拷贝web.xml头部。
9.自定义骨架
1。先定义好一个目录完善,web.xml正确的工程
2.该工程添加骨架插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-archetype-plugin</artifactId>
<version>3.0.0</version>
</plugin>
3.执行骨架插件:去右边栏点下就行。archetype:create-from-project
4.进入target/generate-sources/archetype下执行install命令,把骨架安装到本地仓库
5.执行archetype:crawl去本地仓库下全局抓取骨架信息,在根目录生成archetype-catalog.xml
6.添加骨架到创建选择列表
10.maven工程继承
maven子工程自动继承父工程的依赖项。把一些公用的依赖在父工程引入,子工程不用在重复引入;
- 1.把依赖项放在dependencies,表示所有子工程自动继承,一般是把必须引入的依赖放入这里。
- 2.把依赖项放在dependencyManagement,表示当前父工程统一管理依赖项的版本信息,子工程不会自动继承,需要手工引入,但不用指定版本,
11.maven聚合工程
把原来的单体项目拆分(横向拆分:功能拆分springCloud,纵向拆分:mvc架构层级拆分)
横向:功能之间的解耦,独立开发,独立部署,独立管理。
纵向:在不同的项目中进行代码复用。
云视频平台:
后台管理系统:管理课程发布,课程分类,评论区,注册人员管理,报名管理,教师管理,课程作业
接口系统:用户注册,登录,注销,查看课程,发表评论,报名课程,查看评论,查看祖业
管理系统前端:
浏览器前端视图:vue,
移动前端:andorid,ios
问题描述:maven的resources资源加载插件默认只加载src/main/resources下文件,compile插件只编译.java文件,所以java目录下的xml映射文件未被加载。
解决方法1:把xml映射文件放在resources资源目录下;注意SqlSESSIOnFactorybEAN配置映射文件目录要改。
解决方法2:在pom.xml中配置resources插件配置,指定加载路径以及加载文件
<!--maven-resources-plugin插件做配置-->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*</include>
</includes>
</resource>
</resources>