首页 > 其他分享 >maven高级

maven高级

时间:2022-10-20 17:56:16浏览次数:45  
标签:依赖 聚合 工程 配置 高级 maven 模块

分模块开发

    分模块开发需要先针对模块功能进行设计,再进行编码。不会先将工程开发完毕,然后进行拆分

    团队内部开发需要发布模块功能到团队内部可共享的仓库中(私服)

 

 

 依赖传递

依赖具有传递性

  • 直接依赖:在当前项目中通过依赖配置建立的依赖关系

  • 间接依赖:被资源的资源如果依赖其他资源,当前项目间接依赖其他资源

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

可选依赖:  可选依赖指对外隐藏当前所依赖的资源————不透明<optional>false</optional>

<dependency>
<groupId>com.itheima</groupId>
<artifactId>maven_03_pojo</artifactId>
<version>1.0-SNAPSHOT</version>
<!--可选依赖是隐藏当前工程所依赖的资源,隐藏后对应资源将不具有依赖传递性-->
<optional>false</optional>
</dependency>

排除依赖:  排除依赖指主动断开依赖的资源,被排除的资源无需指定版本————不需要<exclusions>

排除依赖资源仅指定GA即可,无需指定V

<dependency>
<groupId>com.itheima</groupId>
<artifactId>maven_04_dao</artifactId>
<version>1.0-SNAPSHOT</version>
<!--排除依赖是隐藏当前资源对应的依赖关系-->
    <exclusions>
         <exclusion>
              <groupId>log4j</groupId>
               <artifactId>log4j</artifactId>
          </exclusion>
    <exclusion>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</exclusion>
</exclusions>
</dependency>

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

 

 

聚合与继承

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

  • 聚合工程:通常是一个不具有业务功能的”空“工程(有且仅有一个pom文件)

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

    • 当工程中某个模块发生更新(变更)时,必须保障工程中与已更新模块关联的模块同步更新,此时可以使用聚合工程来解决批量模块同步构建的问题

 

 

 

 

注意事项:

  1. 聚合工程中所包含的模块在进行构建时会根据模块间的依赖关系设置构建顺序,与聚合工程中模块的配置书写位置无关。

  2. 参与聚合的工程无法向上感知是否参与聚合,只能向下配置哪些模块参与本工程的聚合。

继承 

继承与java中的继承很相似

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

作用 :简化配置 ,减少版本冲突

 

继承关系开发

1 创建Maven模块,设置打包类型为pom

<packaging>pom</packaging>

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

 

 

 3 .1配置子工程中可选的依赖关系

 

 

 3.2 配置子工程中可选的依赖关系

 

 

  4子工程选择的依赖

 

 

 

聚合与继承的区别

 

 

 属性管理

 

 

 

 

 

 

 

 

 资源文件引用

1定义属性

2引用属性

 

 

 3开启资源文件目录加载属性过滤器

 

 

 4配置maven打war包时,忽略web.xml检查(或者在webapp包下写一个空的web.xml文件 骗一下系统)

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.3</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>

 其他属性

 

 

 版本管理

shapshot:快照版本 就是不稳定的版本 

release:是比较稳定的版本

 

 发布版本

 

 多环境配置

 

 使用多环境 用maven指令mvn install –P pro_env 在idea中maven右边有一个小圈

 

 

   或者在cmd窗口下完成也可以

 

跳过测试

应用场景 :功能更新中并且没有开发完毕 快速打包

跳过测试命令:mvn install –D skipTests

 细粒度控制跳过测试:

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.22.1</version>
    <configuration>
        <skipTests>true</skipTests>
        <!--设置跳过测试-->
        <includes>
            <!--包含指定的测试用例-->
            <include>**/User*Test.java</include>
        </includes>
        <excludes>
            <!--排除指定的测试用例-->
            <exclude>**/User*TestCase.java</exclude>
        </excludes>
    </configuration>
</plugin>

私服

 

 分类

 

标签:依赖,聚合,工程,配置,高级,maven,模块
From: https://www.cnblogs.com/jiayuyao/p/16810751.html

相关文章

  • 使用versions-maven-plugin插件批量修改pom.xml版本
    Java开发过程中,通常一个项目有多个子模块(项目结构如下),我们发布新版本后,需要创建新的分支并修改pom.xml中的版本号,如果模块过多,这是一个麻烦的事情,但我们有versions-maven-p......
  • Maven idea 兼容性
    maven与idea不兼容性maven3.8.6和idea2021.2.4不兼容,会在使用中出现问题?解决办法:使用低版本maven,如:maven3.5.4替换。低版本下载......
  • Maven项目不同jar包相同类名的引用问题
    本文简单记录下一个小问题问题描述:在一个Maven项目中,引用了两个jar包,其中两个jar包中,都含有个相同类(包名也相同),这个时候代码里使用该类,出现引用失败的问题如下图所示,......
  • MySQL高级查询
    1.子查询、联合查询--selectmax(score)fromstu--子查询select*from(selectmax(score)fromstu)s1;--子查询,查询最高分的学生信息select*fromstuwhe......
  • 解决maven项目中的乱码问题
    本人使用的开发工具IDEA,项目中只要涉及到中文的文件,编译前文件不乱码,编译后打断点能看到中文乱码,各种编码设置都有,但是编译后的文件还是乱码,最终在pom文件中增加了编译插件......
  • 断点maven-断点续传-大文件断点上传
    ​一、概述 所谓断点续传,其实只是指下载,也就是要从文件已经下载的地方开始继续下载。在以前版本的HTTP协议是不支持断点的,HTTP/1.1开始就支持了。一般断点下载时才用到......
  • ❤️《Mybatis从基础到高级》(建议收藏)❤️
    ❤️Mybatis❤️三连+关注!!!1、简介MyBatis本是apache的一个​​开源项目​​​iBatis,2010年这个​​项目​​​由apachesoftwarefoundation迁移到了[googlecode](https://......
  • Eclipse Maven Install打包报错:Perhaps you are running on a JRE rather than a JDK
    EclipseMavenInstall打包报错:PerhapsyouarerunningonaJREratherthanaJDK?解决方法MavenInstall打包报错:PerhapsyouarerunningonaJRErathert......
  • 算法高级(46)-波士顿动力机器人ATLAS
    一、引言如果说阿尔法狗是对人类智力的碾压,那么,波士顿动力研发的机器人,正在挑战的是仿生学。波士顿动力公司(BostonDynamics)一致在专注于机器人的研发,每一次波士顿动力放出......
  • 算法高级(45)-阿尔法狗到底有多厉害?
    1997年5月11日,一台名为“深蓝”的超级电脑将棋盘上的一个兵走到C4位置时,人类有史以来最伟大的国际象棋名家卡斯帕罗夫不得不沮丧地承认自己输了。世纪末的一场人机大战终于......