banner
NEWS LETTER

Maven操作指南

Scroll down

Maven

Maven简介

Maven是什么

  • Maven的本质是一个项目管理工具

Maven的作用

  • 项目构建:提供标准的、跨平台的自动化项目构建方式

  • 依赖管理:方便快捷的管理项目以来的资源(jar包),避免资源间 的版本冲突问题

  • 统一开发结构:提供标准的、统一的项目结构

    image-20230208143603620

MVC三层架构

  • bean:存放数据

    1、存放来自于数据库的数据。

    2、存放来自客户端的数据(表单提交),存数据的中介作用

  • dao:data access object:数据访问对象,主要做的事情就是对数据库单表进行增删改操作,查的有可能是多表管理查询
  • service: 对应界面上的操作,增删改查,至于这个业务涉及到几个dao,就调用几个dao
  • servlet:

    1、接受用户请求,进行处理(doget/dopost)调用service,得到数据

    2、做出响应(HTML):通过PrintWriter out = response.getWriter();通过out输出HTML代码

业务流程:

一个业务都是从后到前,首先第一步:设计数据库
dao ——– service(调用多个dao) ——- servlet(接受用户请求,做出响应)——–HTML(JSP技术)

Maven本地仓库配置

创建本地仓库

安装目录–>conf–>settings.xml文件

文件第53行复制出来修改为本地新建的仓库地址

修改镜像地址

安装目录–>conf–>settings.xml文件

文件第153~158行复制出来修改为:

1
2
3
4
5
6
7
8
9
10
<mirror>
<!-- 此镜像的唯一标识符,用来区分不同的mirror元素-->
<id>nexus-aliyun</id>
<!--对哪种仓库进行镜像,简单说就是替代哪个仓库-->
<mirrorof>central</mirrorof>
<!--镜像名称-->
<name>Nexus aliyun</name>
<!--镜像URL -->
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

Maven项目构建

1
2
3
4
5
mvn compile			#编译
mvn clean #清理
mvn test #测试
mvn package #打包
mvn install #安装到本地仓库

分模块开发与设计

一个项目在开发过程中,为了加快开发进程每个人都会负责其中一个小模块。最终将他们整合在一起构成一个完整的项目

  1. 依赖于谁就将那个模块pom.xml的

    1
    2
    3
    <groupId>org.example</groupId>
    <artifactId>Ssm_pojo</artifactId>
    <version>1.0-SNAPSHOT</version>
  2. 将子模块的语句当做jar包进入

  3. 子模块进行install才能使用

依赖传递

依赖传递

依赖具有传递性

  • 直接依赖:在pom文件中直接写的就是
  • 间接依赖:直接依赖中所使用的依赖就是间接依赖

依赖传递冲突的问题

  • 路径优先:当依赖中出现相同的资源时,层级越靠后优先级越低,层级越靠前优先级越高
  • 声明优先:当资源在相同层级被依赖时,越靠后的优先级越高
  • 特殊优先:当同等级配置了不同版本,后配置的优先级最高

可选依赖和排除依赖

可选依赖

1
2
3
4
5
6
7
8
9
<dependenaies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<!--可选依赖是隐藏当前工程所依赖的资源,隐藏后对应的资源将不具备依赖-->
<optional>false</optional>
</dependency>
</dependenaies>

排除依赖

1
2
3
4
5
6
7
8
9
10
11
12
<dependency>
<groupId>org.example</groupId>
<artifactId>Ssm_pojo</artifactId>
<version>1.0-SNAPSHOT</version>
<!--排除依赖-->
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>

注:在排除依赖时,不区分版本是排除所有的对应依赖

可选依赖和排除依赖的区别:

  • 可选依赖:对外隐藏当前所依赖的资源
  • 排除依赖:外部资源给了,但是我不要主动将其屏蔽

聚合与继承

聚合

分模块开发时,当一个模块进行维护,其他依赖于这个模块的模块不知道就会产生一系列的错误。以pojo、service、dao为例

service和dao依赖于pojo,当pojo更新时service和dao层不能及时构建就会产生引不到pojo中的对象。

而聚合的作用就是使用一个大的,有且只有一个pom文件的类来管理所有的模块。从而保证所包含的模块进行同步构建

  1. 创建聚合工程

  2. 在pom文件中

    打包方式改为packaging

    1
    <packaging>pom</packaging>

    注意:每个maven工程都有自己对应的打包方式,其中默认是jar,web工程是war

    将需要管理的模块放置在modules中

    1
    2
    3
    4
    5
    <modules> 
    <module>../3.15SSM</module>
    <module>../Ssm_pojo</module>
    <module>../SsmWithWeb</module>
    </modules>

继承

对于很多模块的很多重复的包引入看起来相当繁琐,可以通过继承从聚合工程中直接拿取

  1. 在父工程的pom文件中配置依赖关系(子工程沿用父工程中的依赖)

    1
    2
    3
    4
    5
    6
    7
    <dependencies>
    <dependency>
    <groupId></groupId>
    <artifactId></artifactId>
    <version></version>
    </dependency>
    </dependencies>
  2. 配置子工程中可选的依赖

    1
    2
    3
    4
    5
    6
    7
    8
    9
    <dependencyManagement>
    <dependencies>
    <dependency>
    <groupId></groupId>
    <artifactId></artifactId>
    <version></version>
    </dependency>
    </dependencies>
    </dependencyManagement>
  3. 在子工程中配置当前工程所继承的父工程

    1
    2
    3
    4
    5
    6
    7
    8
    <!--定义该工程的父工程-->
    <parent>
    <groupId></groupId>
    <artifactId></artifactId>
    <version></version>
    <!--填写父工程的pom文件地址-->
    <relativePath>../maven_01_parent/pom.xml</relativePath>
    </parent>
  4. 使用父工程中可选依赖的坐标(不要写版本号,版本号自动使用父工程版本)

    1
    2
    3
    4
    5
    6
    <dependencies>
    <dependency>
    <groupId></groupId>
    <artifactId></artifactId>
    </dependency>
    </dependencies>

属性

当我们想要更换版本时,如果一个一个更改不仅费事还有可能出现漏改的情况。对于这种情况我们可以设置一个类似于变量的东西,把属性值存放起来到时候调用这个“变量”从而达到一劳永逸的效果

  1. 定义属性
1
2
3
4
<properties>
<!--自定义属性值-->
<spring.versions>5.2.10.RELEASE</spring.versions>
</properties>
  1. 使用属性
1
2
3
4
5
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.versions}</version>
</dependency>

配置文件加载属性

所谓给配置文件加载属性就是将pom中设置的属性能灵活的赋给

  1. 定义属性

    1
    2
    3
    4
    <properties>
    <!--自定义属性值-->
    <jdbc.url>jdbc:mysql://127.0.0.1:3306/ssm_bd</jdbc.url>
    </properties>
  2. 在配置文件中写

    1
    jdbc.url=${jdbc.url}
  3. 告诉资源文件可以使用加载的属性

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <build>
    <resources>
    <resource>
    <!--允许使用的资源包路径-->
    <directory>../maven_02_ssm/src/main/resources</directory>
    <!--是否使用-->
    <filtering>true</filtering>
    </resource>
    </resources>
    </build>

多环境开发

在将来的开发中,sql数据库地址分为三种,分别是生产环境、开发环境和测试环境每一种环境都是不同的路径

Maven提供了多种环境的设定,帮助开发者使用过程中随意地切换环境

定义属性变成了:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<profiles>
<!--开发环境-->
<profile>
<id>env_dep</id>
<properties>
<jdbc.url>jdbc:mysql://127.1.1.1:3306/ssm_db</jdbc.url>
</properties>
<!-- 设置是否是默认值-->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!--生产环境-->
<profile>
<id>env_pro</id>
<properties>
<jdbc.url>jdbc:mysql://127.2.2.2:3306/ssm_db</jdbc.url>
</properties>
</profile>
<!--测试环境-->
<profile>
<id>env_test</id>
<properties>
<jdbc.url>jdbc:mysql://127.3.3.3:3306/ssm_db</jdbc.url>
</properties>
</profile>
</profiles>

如果我们不想来回的写默认值,可以这样做:

image-20230320162306232

点击之后运行mvn install -P 属性id名(env_test)

私服(Nexus)

私服与本地仓库连接

  1. 创建私服仓库

    image-20230320174440263

    image-20230320175404015

    输入仓库名和地址

  2. 在本地maven仓库中配置

    配置私服

image-20230320174345033

​ 设置私服仓库地址

image-20230320175847641

上传与下载

在父工程中配置当前工程保存在私服中的具体位置

1
2
3
4
5
6
7
8
9
10
<distributionManagement>
<repository>
<id>itheima-release</id>
<url>http://locathost:8081/repository/itheima-release</url>
</repository>
<snapshotRepository>
<id>itheima-snapshot</id>
<url>http://locathost:8081/repository/itheima-snapshot</url>
</snapshotRepository>
</distributionManagement>

发布命令:mvn deploy

Other Articles
cover
Java EE笔记
  • 23/02/28
  • 18:57
  • 7.2k
  • 30