Maven进阶

Maven进阶

分模块开发与设计

1.创建Maven模块将项目中的实体类拆分出来

image-20220723143259673

2.书写模块代码

3.通过Maven指令安装到本地仓库(install命令)

image-20220723143501645

4.导入这个模块的依赖坐标

image-20220723143515333

5.测试:

通过Mavem指令compile编译一下

显示BuildSuccces

即完成domain层的分模块开发

依赖的传递性

当模块1使用了模块2的依赖坐标,而模块2导入了模块3的依赖坐标

此时模块1中不需要导入模块3的依赖坐标也能使用模块3中的内容

2.模块称为直接依赖

3模块称为间接依赖

依赖管理冲突问题

路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高

声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的

特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的

可选依赖:不透明

隐藏当前工程所依赖的资源,隐藏后对应的资源将不具有依赖传递性

<optional>true</optional>

排除依赖:不需要

在你当前引用的坐标中将它的依赖从你的依赖坐标中去除

<exclusions>
    <exclusion>
        <groupId></groupId>
        <artifactId></artifactId>
    </exclusion>
</exclusions>

聚合

将多个模块组织成一个整体,同时进行项目构建的过称为聚合

聚合工程:通常是一个不具有业务功能的空工程(有且只有一个pom.xml文件)

作用:使用聚合工程可以将多个工程编组,通过对聚合工程进行构建,实现对所包含的模块进行同步构建

创建一个聚合工程

设他的打包方式为

<packaging>pom</packaging>

设置管理的模块名称

<modules>
    <module>../spring_ssm1</module>
    <module>../spring_ssm2</module>
</modules>

image-20220723151917649

继承

概念:继承描述的是两个工程的关系,与java中的继承类似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承

使用标签继承该工程下的依赖

<parent>

    <groupId>com.itheima</groupId>
    <artifactId>springmvc_parent</artifactId>
    <version>1.0-SNAPSHOT</version>
    <relativePath>../springmvc_parent/pom.xml</relativePath>
</parent>

当父工程中有一个依赖,子工程不想用

可以在父工程中设置依赖管理,子工程是不会自动继承这个依赖的

<dependencyManagement>
    <dependencies>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

如果子工程想用这个依赖的话(不需要填版本号)

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
    </dependency>
</dependencies>

聚合和继承的区别:

作用:

  • 聚合用于快速构建项目

  • 继承用于快速配置

相同点:

  • 聚合与继承的pom.xml文件打包方式均为pom,可以将两种关系制作到一个pom文件中

  • 聚合和继承均属于设计行模块,并无实际的模块内容

不同点:

  • 聚合是在当前模块中配置关系,聚合可以感知到参与聚合的模块有哪些

  • 继承是在子模块配置关系,父模块无法感知那些子模块继承了自己

属性

定义属性(设置名称为spring.version)

<properties>
    <spring.version>5.2.10RELEASE</spring.version>
</properties>

引用这个属性 ${属性名}

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>${spring.version}</version>
</dependency>

配置文件加载属性

在pom中再配置一行属性

<properties>
    <spring.version>5.2.10.RELEASE</spring.version>
    <jdbc.url>jdbc:mysql://localhost:3306/ssm_db</jdbc.url>
</properties>

该属性只能在这个pom文件使用

我们必须扩大maven的控制范围

<build>
    <resources>
        <resource>
            <directory>../spring_ssm1/src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

在jdbc.properties文件中就可以使用${属性名}进行访问了

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=${jdbc.url}
jdbc.username=root
jdbc.password=20020630

文件结构发生变化

image-20220723161120613

如果要配置多个resource的路径

修改目录结构(${project.basedir}代表所有子项目)

<build>
    <resources>
        <resource>
            <directory>${project.basedir}/src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

多环境配置与应用

    <!--配置多环境-->
    <profiles>

        <!--开发环境-->
        <profile>
            <id>env_dep</id>
            <properties>
                <jdbc.url>jdbc:mysql://127.0.0.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>

注意将之前配置的jdbc.url注释了

image-20220723164455422

快速使用多环境开发

mvn 指令 -P 环境定义的id

image-20220723165043358

跳过测试

第一种方法:点击”闪电“即可跳过test

image-20220723165421380

第二种:

<plugins>
    <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.12.4</version>
        <configuration>
            <skipTests>true</skipTests>
        </configuration>
    </plugin>
</plugins>

就相当于第一种方法

排除掉指定的测试

<plugins>
        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.12.4</version>
            <configuration>
                <skipTests>false</skipTests>
                <!--排除掉不参与测试的内容-->
                <excludes>
                   <exclude>**/BookServiceTest.java</exclude>
                </excludes>
            </configuration>
        </plugin>
    </plugins>
</build>

私服

私服是一台独立的服务器,用于解决团队内部的资源共享与资源同步问题

Download (sonatype.com)

启动:在安装目录中的bin目录下(D:\SoftWare\latest\nexus-3.30.1-01\bin)打开cmd,输入nexus.exe /run nexus

打开浏览器访问服务器(默认端口8081):http://localhost:8081

image-20220723173226099

私服仓库分类
仓库类别英文名称功能关联操作
宿主仓库hosted保存自主研发+第三方资源上传
代理仓库proxy代理连接中央仓库下载
仓库组group为仓库编组简化下载操作下载

资源的上传与下载

先创建两个仓库

image-20220723175731846

在D:\SoftWare\apache-maven-3.6.1\conf\settings.xml中配置

   <!-- 配置访问私服的权限 -->
        <server>
      <id>itheima-snapshot</id>
      <username>admin</username>
      <password>ylh20020630...</password>
    </server>

      <server>
      <id>itheima-release</id>
      <username>admin</username>
      <password>ylh20020630...</password>
    </server>

 <!-- 私服的访问路径 -->
 <mirror>
 <id>maven-public</id>
 <url>http://localhost:8081/repository/maven-public/</url>
 <mirrorOf>*</mirrorOf>
 </mirror>

回到idea的pom.xml文件中

<!--配置当前工程保存在私服中的具体位置-->

<distributionManagement>
    <repository>
        <id>itheima-release</id>
        <url>http://localhost:8081/repository/itheima-release/</url>
    </repository>
    <snapshotRepository>
        <id>itheima-snapshot</id>
        <url>http://localhost:8081/repository/itheima-snapshot/</url>

    </snapshotRepository>
</distributionManagement>

通过点击deploy上传

image-20220723184320656

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值