天天看点

1.10.maven使用maven

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>