Maven工程的搭建

  • Post author:
  • Post category:其他




Maven工程的搭建

1、什么是Maven?

Maven这个单词的本意是:专家,内行。读音是[‘meɪv(ə)n]或[‘mevn],不要读作“妈文”。Maven是一款自动化构建工具,专注服务于Java平台的项目构建和依赖管理。在JavaEE开发的历史上构建工具的发展也经历了一系列的演化和变迁:Make→Ant→Maven→Gradle

2、Maven可以用来做什么?

1)项目构建

2)依赖管理

3、什么是项目构建?

所谓把动态的Web工程经过编译得到的编译结果部署到服务器上的整个过程。

编译:java源文件[.java]->编译->Classz字节码文件[.class]

部署:最终在sevlet容器中部署的不是动态web工程,而是编译后的文件

a、构建的过程:

①清理:将以前编译得到的旧文件class字节码文件删除

②编译:将java源程序编译成class字节码文件

③测试:自动测试,自动调用junit程序

④报告:测试程序执行的结果。

⑤打包:动态web工程打war包,java工程打jar包

⑥安装:Maven特定的概念—–将打包得到的文件复制到“仓库”中的指定位置

⑦部署:将动态Web工程生成的war包复制到Servlet容器下,使其可以运行。

b、自动化构建

简单的说来就是它可以自动的从构建过程的起点一直执行到终点:maven可以帮助我们,从清理-编译-测试-报告-打包-部署全过程一站式完成。

4、什么是依赖管理?

简单的说,就是当我们导入jar的时候,如果该jar包依赖其他jar,它会自动帮我们把它依赖的其他jar自动导入。

5、maven的命令

1)mvn clean:表示运行清理操作(会默认把target文件夹中的数据清理)。

2)mvn clean compile:表示先运行清理之后运行编译,会将代码编译到target文件夹中。

3)mvn clean test:运行清理和测试。

4)mvn clean package:运行清理和打包。

5)mvn clean install:运行清理和安装,会将打好的包安装到本地仓库中,以便其他的项目可以调用。

6)mvn clean deploy:运行清理和发布(发布到私服上面)。



2、Maven的安装配置

1、

下载地址

:[http://maven.apache.org/download.cgi]

2、配置

  1. 确保jdk环境变量正确

    2)配置环境变量

    M2_HOME:D:\apache-maven-3.3.9

    path: %M2_HOME%\bin

    3)验证是否成功

    在命令行输入:mvn -v或者mvn -version

    命令行展示

    3、Maven仓库分类

    1)本地仓库 2)远程仓库(a、中央仓库 b、私服 c、其他的公共仓库)

    4、仓库

    Maven项目需要的jar是在pom.xml文件中通过坐标来声明的,我们在构建的时候,会根据坐标到本地仓库中找到对应的jar,如果没有找到就到中央仓库或者国内的私服上去下载,将下载的jar保存到本地仓库。这样工程就可以顺利的构建,不会因为找不到jar而失败。

命令行展示

1)本地仓库

2)远程仓库-中央仓库

3)远程仓库-私服

4)镜像仓库

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




默认的内置Maven

在这里插入图片描述

在这里插入图片描述



全局maven配置

在这里插入图片描述

通过Maven可以创建的工程的类型:

1)普通的java工程,它的打包方式是jar

在这里插入图片描述

在这里插入图片描述

项目位置:

在这里插入图片描述

2)普通的javaWeb工程,它的打包方式是war

3)可以多模块工程(父工程和子模块),父工程的打包方式是POM,子工程根据需要可以是jar,也可以是war

4)xxxxx-site是父工程模板,xxx-webapp是web工程,xxx-quikstart是maven工程



3、maven的依赖高级特性

1)依赖的传递性

如果项目p3依赖工程p2,而工程p2又依赖工程p1,那么当我们在p3中添加p2的依赖的时候,Maven会自动帮我们把传递的p1依赖添加进行(不需要用户自己去做)

2)依赖版本的原则

a)路径最短者优先原则(层次最浅原则):如果p3依赖p2和p1,而p2依赖p1,由于依赖具有传递性。那么对应p3来讲,它需要解决到底是依赖p2传递的p1,还是直接依赖p1的版本的问题?根据原则,p1在p3中的层次比p2传递的p1的层次浅,因此最终依赖的是在p3中直接声明的p1

b)路径相同先声明优先原则:对应传递的依赖,哪个写在前面,就依赖哪个传递的版本。比如p4依赖p2和p3,p2依赖p1的1.0版,p3依赖p1的2.0版本。在p4中必须对传递过来的p1的两个版本1.0和2.0进行版本的仲裁。结果就是谁先写在pom.xml的前面谁先依赖。



4、idea中创建Maven工程

A、全局的配置

B、工程创建

1)步骤

说明:快照版代表还不稳定的版本,等稳定后就会发布正式版

在这里插入图片描述

在这里插入图片描述

2)Maven工程的标准目标

在这里插入图片描述

3)为什么 maven 工程的目录结构要这样呢?

a)Maven 要负责项目的自动化构建,以编译为例,Maven 要想自动进行编译,那么它必须知道 Java 的源文件保存在哪里,这样约定之后,不用我们手动指定位置,Maven 能知道位置,从而帮我们完成自动编译。

b)遵循 约定>配置>编码。即能进行配置的不要去编码指定,能事先约定规则的不要去进行配置。这样既减轻了劳动力,也能防止出错。

4)Maven默认约定了一套目录结构,在通过Maven创建了项目以后,项目的目录结构就是以这套目录结构作为模板创建的。

文档中关于所有目录结构的含义如下:

src/main/java Application/Library sources

src/main/resources Application/Library resources

src/main/filters Resource filter files

src/main/webapp Web application sources

src/test/java Test sources

src/test/resources Test resources

src/test/filters Test resource filter files

src/it Integration Tests (primarily for plugins)

src/assembly Assembly descriptors

src/site Site

LICENSE.txt Project’s license

NOTICE.txt Notices and attributions required by libraries that the project depends on

README.txt Project’s readme



5、Maven构建SSM工程

在这里插入图片描述

1、拷贝文件:7个文件的拷贝

a)修改工程结构,将项目补充成标准的maven web (目录结构看上图)

b)拷贝如下文件到resoureces文件夹

1)applicationContext.xml:spring框架的配置文件

2)springmvc.xml:springmvc的配置文件

3)SqlMapConfig.xml:mybatis的主配置文件

4)log4j.properties:日志的属性配置文件

5)db.properties:数据库的属性配置文件

6)web.xml拷贝到webapp的WEB-INF下面

7)pom.xml拷贝到src下面

2、检查配置文件的内容(注意7次修改)

1)修改db.properties,注意账号和密码,以及数据库的名称

2)applicationContext.xml注意的位置(5个位置)

3)springmvc.xml 1个位置

4)在webapp的WEB-INF下建立jsp的文件夹



反向工程生成代码

1、将generatorConfig.xml放在resources资源文件夹下面.

2、在电脑的某个文件夹下面放置mysql-connector-java-5.1.38.jar

3、修改generatorConfig.xml配置文件,主要是数据库名、用户名、密码、实体类的包名、mapper.xml的包名、Mapper接口的包名、指定自动生成的表

4、执行



版权声明:本文为qq_44728650原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。