Maven入门到掌握(一套打通任督二脉)

2023-11-22 10:20

本文主要是介绍Maven入门到掌握(一套打通任督二脉),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1:分模块开发

  • 意义:

  • 步骤

    • 创建新模块

    • 在各个模块中导入所需要的那个模块的依赖,例

      a<!--    依赖pojo模块--><dependency><groupId>com.ysj</groupId><artifactId>maven_03_pojo</artifactId><version>1.0-SNAPSHOT</version></dependency>
      
    • 将要导入的模块安装(install)到本地仓库,否则编译都过不了

在这里插入图片描述

2:依赖管理

  • 依赖传递

    • 依赖具有传递性
      • 直接依赖
      • 间接依赖
    • 依赖注入冲突问题
      • 当同一个坐标配置了多个版本的依赖,后面会覆盖前面的
        在这里插入图片描述
  • 可选依赖(不透明性):隐藏当前工程所依赖的资源,隐藏后对应的资源不具有传递性

        <dependency><groupId>com.ysj</groupId><artifactId>maven_03_pojo</artifactId><version>1.0-SNAPSHOT</version>
    <!--        隐藏依赖配置--><optional>true</optional>
    
  • 排除依赖(不需要):隐藏当前以来对应的资源关系,无需指定版本

    <!--      依赖dao模块--><dependency><groupId>com.ysj </groupId><artifactId>maven_04_dao</artifactId><version>1.0-SNAPSHOT</version><exclusions>
    <!--              隐藏当前以来对应的资源关系,无需指定版本--><exclusion><groupId>mysql</groupId><artifactId>mysql:mysql-connector-java</artifactId></exclusion></exclusions></dependency>
    

3:继承与聚合

3.1:聚合

  • 定义:将多个模块组织成一个整体,同时进行项目构建

  • 目的:为了让统一管理各个模块,当其中有模块更新时,让多个模块同时更新

  • 聚合工程

    • 新建一个模块,该模块只需一个pom.xml文件

      • 其打包方式为pom

        <groupId>com.ysj</groupId>
        <artifactId>maven_01_parent</artifactId>
        <version>1.0-SNAPSHOT</version>
        <packaging>pom</packaging>
        
    • pom.xml中进行模块管理

      <modules><module>../maven_03_pojo</module><module>../maven_04_dao</module><module>../../../../springmvc_08_ssm</module>
      </modules>
      
    • 无需管上边儿module的书写顺序,实际聚合中,程序会根据依赖关系逐步构建

3.2:继承

  • 类似java

  • 聚合与继承一般在一个模块中

  • 作用

    • 简化配置
    • 减少版本冲突
  • <!--    配置当前工程继承自parent工程--><parent><groupId>com.ysj</groupId><version>1.0-SNAPSHOT</version><artifactId>maven_01_parent</artifactId><!--填写父工程的pom文件--><relativePath>../maven_01_parent/pom.xml</relativePath></parent>
    
  • 在父模块中定义依赖管理

    • <!--定义依赖管理--><dependencyManagement><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency></dependencies></dependencyManagement>
      
    • 此时子模块中可自行选择是否使用该依赖,若使用,则不用指定版本号,默认使用父模块的版本

3.3:继承和聚合的区别

在这里插入图片描述

4:属性

4.1:属性

  • 定义属性
<!--定义属性:变量名为spring.version,版本号为5.2.10.RELEASE-->
<properties>
<spring.version>5.2.10.RELEASE</spring.version>
</properties>
  • 使用属性(使用${})

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

4.2:配置文件加载属性

        <build><resources><resource>
<!--${project.basedir}表示当前项目目录,因为子项目继承了parent,所以子项目也有该功能--><directory>${project.basedir}/src/main/resources</directory><filtering>true</filtering></resource></resources></build>
  • 打包时要配置maven打war包,此时要忽略web.xml的检查

    • 在web项目下新建个空web.xml文件

    • 在web项目下的pom.xml中定义插件

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

4.3:版本管理

在这里插入图片描述

6:多环境开发

6.1:配置多环境

  • 通过id进行区分
<!--    配置多环境--><profiles>
<!--        开发环境--><profile><id>env_dep</id><properties><jdbc.url>jdbc:mysql://127.0.0.1:3306/mybatis</jdbc.url></properties><!--设置默认开发环境--><activation><activeByDefault>true</activeByDefault></activation></profile>
<!--            生产环境--><profile><id>env_pro</id><properties><jdbc.url>jdbc:mysql://127.1.1.1:3306/mybatis</jdbc.url></properties></profile><!--            测试环境--><profile><id>env_test</id><properties><jdbc.url>jdbc:mysql://127.2.2.2:3306/mybatis</jdbc.url></properties></profile></profiles>

6.2:设置默认开发环境

  • 打包时用命令

    mvn -install -P 环境名
    

7:跳过测试

  • 当上线前有些功能还未开发完全,跳过测试可直接打包

  • 方法

    • 点这个闪电:但是这个的弊端是所有模块均跳过测试

    在这里插入图片描述

    • 配置插件跳过

    • <!--测试插件--><plugins><plugin><artifactId>maven-surefire-plugin</artifactId><version>2.22.2</version><configuration><!--跳过测试选项--><skipTests>false</skipTests><!--排除掉不参与测试的内容--><excludes><exclude>**/BookServiceTest.java</exclude></excludes></configuration></plugin></plugins>
      
    • 指令跳过

      mvn package -D skipTest
      
           <excludes><exclude>**/BookServiceTest.java</exclude></excludes></configuration></plugin></plugins>
```
  • 指令跳过

    mvn package -D skipTest
    

    关于私服的学习,后续会更新。

创作不易,六个三连+关注吧

这篇关于Maven入门到掌握(一套打通任督二脉)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/409459

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

每天认识几个maven依赖(ActiveMQ+activemq-jaxb+activesoap+activespace+adarwin)

八、ActiveMQ 1、是什么? ActiveMQ 是一个开源的消息中间件(Message Broker),由 Apache 软件基金会开发和维护。它实现了 Java 消息服务(Java Message Service, JMS)规范,并支持多种消息传递协议,包括 AMQP、MQTT 和 OpenWire 等。 2、有什么用? 可靠性:ActiveMQ 提供了消息持久性和事务支持,确保消

30常用 Maven 命令

Maven 是一个强大的项目管理和构建工具,它广泛用于 Java 项目的依赖管理、构建流程和插件集成。Maven 的命令行工具提供了大量的命令来帮助开发人员管理项目的生命周期、依赖和插件。以下是 常用 Maven 命令的使用场景及其详细解释。 1. mvn clean 使用场景:清理项目的生成目录,通常用于删除项目中自动生成的文件(如 target/ 目录)。共性规律:清理操作

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

poj 2104 and hdu 2665 划分树模板入门题

题意: 给一个数组n(1e5)个数,给一个范围(fr, to, k),求这个范围中第k大的数。 解析: 划分树入门。 bing神的模板。 坑爹的地方是把-l 看成了-1........ 一直re。 代码: poj 2104: #include <iostream>#include <cstdio>#include <cstdlib>#include <al

MySQL-CRUD入门1

文章目录 认识配置文件client节点mysql节点mysqld节点 数据的添加(Create)添加一行数据添加多行数据两种添加数据的效率对比 数据的查询(Retrieve)全列查询指定列查询查询中带有表达式关于字面量关于as重命名 临时表引入distinct去重order by 排序关于NULL 认识配置文件 在我们的MySQL服务安装好了之后, 会有一个配置文件, 也就

maven 编译构建可以执行的jar包

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」👈,「stormsha的知识库」👈持续学习,不断总结,共同进步,为了踏实,做好当下事儿~ 专栏导航 Python系列: Python面试题合集,剑指大厂Git系列: Git操作技巧GO