Maven中关系与应用

Maven中的关系

继承

一个Maven项目可以继承另一个Maven项目,分别称为子项目、父项目

场景:多个子项目中使用的是相同的依赖或插件,此时可以把相同的配置抽取到一个父项目中,进行统一的管理,保持一致性

步骤:

  1. 将父项目的打包方式设置为pom

    <!--
        打包方式:
        jar:Java项目的打包方式:默认值
        war:Web项目的打包方式
        pom:父项目的打包方式-->
        <packaging>jar</packaging>
    
  2. 在子项目中引用父项目,指定父项目的坐标

    <!--  引用父项目,指定父项目的坐标-->
        <parent>
            <groupId>org.example</groupId>
            <artifactId>parent</artifactId>
            <version>1.0-SNAPSHOT</version>
              <!--  指定父项目的pom.xml文件的相对物理路径-->
            <relativePath>xx/xx/</relativePath>
        </parent>
    
    

问题:有时并不是父项目的所有依赖都需要被项目继承,但是又希望能够通过父项目对依赖进行统一管理,如版本的控制

解决:使用dependencyManagement标签

步骤:

  1. 在父项目中配置dependencyManagement

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.ljy</groupId>
                <artifactId>mysql..</artifactId>
                <version>12.52.</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
  2. 在子项目中引用父项目中的依赖、

<dependencies>
    <dependency>
        <groupId>com.ljy</groupId>
        <artifactId>mysql..</artifactId>
    </dependency>
</dependencies>

聚合

将多个子项目添加到一个父项目中,然后通过对父项目进行操作,从而实现对所有聚合的子项目的操作

扫描二维码关注公众号,回复: 12731871 查看本文章

在父项目的pom中

<!--    聚合子项目,指定子项目的根目录-->
 <modules>
     <module>../...</module>
     <module>../...</module>
 </modules>

依赖(继承)

项目C–>项目B–>项目A

概念:如果项目C依赖于项目B,项目B依赖项目A,则项目C也依赖于项目A,这叫依赖的传递

配置依赖关系:

<!--  依赖于其他子项目child01-->
        <dependency>
            <groupId>com.ljy</groupId>
            <artifactId>child01</artifactId>
            <version>xx</version>
        </dependency>

控制依赖的传递

并不是所有的依赖都会被传递

  • scope为compile的依赖会传递
  • scope为test的依赖不会被传递
  • 配置optional为true的依赖不会被传递(不能写在父项目中)
<dependency>
    <groupId>com.ljy</groupId>
    <artifactId>lof3</artifactId>
    <optional>true</optional>
</dependency>

不会出现jar包的冲突

使用Maven不会出现jar包冲突,通过两个原则来保证:

  • 就近原则
  • 优先定义原则(看是哪个依赖先写,02与01的先后顺序)
       <dependency>
            <groupId>com.ljy</groupId>
            <artifactId>child01</artifactId>
            <version>xx</version>
        </dependency>
       <dependency>
            <groupId>com.ljy</groupId>
            <artifactId>child02</artifactId>
            <version>xx</version>
        </dependency>

不要传递的依赖

方式1:在依赖的配置中配置不允许传递

<optional>true</optional>

方式2:在当前的项目中配置不接收传递的特定依赖

<dependency>
   <!-- 不接收特定的依赖 --> 
<exclusions>
 <exclusion>
    <groupId>xxx</groupId>
    <artifacdId>xxx</artifacdId>
 </exclusion>
</exclusions>
</dependency>

Maven Web项目

基本操作

<!--      Tomcat插件-->
      <plugins>
        <plugin>
          <groupId>org.apache.tomcat.maven</groupId>
          <artifactId>tomcat7-maven-plugin</artifactId>
          <version>2.2</version>
          <configuration>
            <path>/</path>
            <port>8080</port>
          </configuration>
        </plugin>

使用Nexus搭建Maven私服

为什么要搭建私服

公司不提供外网给开发人员,无法使用Maven访问远程仓库,此时可以在局域网内找一台能访问外网的电脑搭建Maven私服

Nexus工具

用来搭建nexus工具

操作步骤:

  1. 下载之后解压缩并安装为系统服务
在解压后的第一个文件:bin\jsw\找到自己对应的系统版本\install-nexus.bat
install-nexus.bat
  1. 访问

    http://localhost:8081/nexus

  2. 登录并配置私服

添加阿里云镜像仓库:

私服网址的右上角:Log in

默认账号:admin

密码:admin123

方法1:

左边Repositories点击然后central下面configuration更改网址

方法2:

左边Repositories点击Add后Proxy Repository 填写(ID NAME)+Default Local Storage(地址):阿里云的镜像地址

然后 Public Repositories–>configuration 在下面把配置的阿里云添加到左边去,然后排顺序,放在central的前面

添加一些阿里云没有的jar包:

点击3rd party 然后Artifact Upload–>选择GAV 然后在添加本地jar包到私服去

Maven综合应用

分析

将项目分为多个项目,可也以按模块,或同时按层次和模块分

以ums为例,使用maven创建和管理项目:

  • 父工程:ums-parent
  • dao工程:ums-dao
  • service工程:usm-service
  • action工程:usm-action

步骤

  1. 创建工程
  2. 配置依赖
  • 在父工程中添加依赖

  • 在子工程中引用依赖:

    子工程引用了依赖需要把标签去掉,版本只在父工程里管理

  1. 配置dao工程

    映射文件储存位置,两种方法:

    • 将映射文件放在resources目录下

      会被打包部署

    • 将映射文件放在java目录下

      默认只会对该目录下的java代码进行打包部署,如果希望对该目录下的配置文件也进行打包,需要额外的配置

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_51418572/article/details/110563048