Maven基本操作详解

Maven

  • 服务于 Java 平台的自动化构建工具

    • 构建:以 Java 源文件、框架配置文件、jsp、HTML、图片等资源作为”原材料“生产可以运行的项目的过程

    • 编译:.java.class,虚拟机进行

    • 部署:B/S 项目运行的是动态 Web 工程编译后的结果

作用

  1. 拆分项目进行模块管理
  2. 利用 Mavenjar 包保存在项目仓库
    • 根据需求引用文件接口
    • 无需复制 jar 包到项目目录
  3. 以规范的方式下载 jar
    • 所有知名框架或三方工具 jar 包都已经按照统一规范存放在 Maven 的中央仓库
  4. 管理 jar 包依赖
    • 自动将被依赖的 jar 包导入
    • 管理 jar 包版本
  5. 编译程序:.java 文件 → .class 文件
  6. 测试代码是否正确
    • Maven 测试模块
  7. 打包程序
    • 项目打包为 jar 包、war
  8. 部署项目
    • 部署项目到服务器,一般不使用 Maven 进行
  • 运行时环境

    • 一组 jar 包的引用,并未把 jar 包本身复制到工程中

      • 例如:JRE
    • 不会在目录中出现

安装

  • 安装Maven核心程序步骤

    1. 检查 JAVA_HOME 环境变量
      • Maven 使用 Java 编写,运行需要 Java 环境
    2. 解压 Maven 核心程序压缩包
      • 路径尽量不含中文、空格,防止不必要意外
        • bin 目录存放执行程序
        • conf 目录存放 Maven 配置文件
    3. 配置 Maven 相关环境变量
      • 创建 MAVEN_HOMEM2_HOME 环境变量
        • 路径值只到到 bin 目录上级
      • 系统 path 变量添加值
        • %MAVEN_HOME%\bin
      • cmd 窗口运行 mvn -v 命令查看 Maven 版本

构建

  • Maven 负责项目的自动化构建

    • 自动进行编译必须知道 Java 源文件保存结构
  • 构建的具体环节

    1. 清理
      • 删除以前编译得到的 class 字节码文件,为下一次编译做准备
    2. 编译
      • 将 Java 流程序编译为 .class 文件
      • 批量编译,同时执行
    3. 测试
      • 自动测试,自动调用 junit 程序
      • 批量执行
    4. 报告
      • 测试程序执行的结果
    5. 打包
      • 生成压缩文件
        • 动态 Web 工程打 war
        • 普通 Java 工程打 jar
    6. 安装
      • Maven 特定的概念
      • 将打包得到的文件复制到仓库指定位置
    7. 部署
      • 将动态 Web 工程生成的 war 包复制到 Servlet 容器指定目录下,使其可以运行

目录结构

  • 自定义文件被其他 maven 工程引用

    1. 通过配置方式明确告诉

      <param-value>classpath:spring-context.xml</param-value>
      
    2. 遵守框架内已经存在的约定

      • log4j.properties
      • log4j.xml
  • 约定的目录结构

    • 根目录:工程名
      • src 目录:存放项目代码
        • main 目录:存放主程序文件
          • java 目录:存放 Java 源代码文件
          • resource 目录:存放程序使用的配置文件
          • webapp 目录:Web 工程目录,存放 js、jsp、web.xml 等文件
        • test 目录:存放测试程序文件,可以没有
          • java 目录:存放测试用的 Java 源代码文件
          • resource 目录:存放测试程序使用的配置文件
      • [target 目录]
        • 存放编译后的.class文件
        • 构建时不存在,编译后产生该目录
      • pom.xml 文件:Maven 核心配置文件,配置 Maven 依赖项等资源

常用命令

  • mvn clean:清理,删除之前的 target
  • mvn compile:编译主程序,即 src/main/java 目录下程序
    • 编译完成后生成 target 目录
  • mvn test-cpmpile:编译测试程序
  • mvn test:执行测试
    • 默认插件版本不对时会报错,需要手动修改插件版本
  • mvn package:打包 src\main\ 目录下文件
    • 根据工程类型打包方式为 jarwar
  • mvn install:安装
    • 将 jar、war 包复制到 maven 仓库
  • mvn site:生成站点

仓库

  • 分类
    • 本地仓库
      • 当前电脑上部署的仓库目录
      • 为当前电脑上所有 Maven 工程服务
    • 远程仓库
      • 私服
        • 搭建在局域网环境
        • 为局域网范围所有 Maven 工程服务
      • 中央仓库
        • 架设在 Internet
        • 为全世界所有 Maven 工程服务
      • 中央仓库镜像
        • 架设在各大洲
        • 为中央仓库分担流量,减轻中央仓库的压力,同时更快响应用户请求
  • 仓库中的文件
    • Maven 需要的的插件
    • 第三方框架或工具的 jar
    • 自己开发的 Maven 工程

jar 包下载

下载方式
  • Maven 核心程序仅定义抽象的生命周期
    • 具体工作必须由特定插件完成
    • 插件本身并不包含在 Maven 核心程序中
  • 执行 Maven 需要用到某些插件
    1. 首先到本地仓库查找
      • 本地仓库默认位置:C:用户\当前用户名\.m2\repository
    2. 本地找不到需求插件自动搜索私服
      • 私服中没有或不存在私服,自动连接外网通过镜像仓库下载
        • 外网仅指区别于局域网的网络环境
    3. 连接外网后进行下载,下载完成后私服保留一份,再发送到本地下载
      • 无法连接外网则构建失败
    4. 镜像仓库中没有会找中央仓库下载
      • 中央仓库没有即没有该 jar 资源
修改本地仓库位置
  1. 找到Maven 程序解压目录中 \conf\setting.xml 文件
  2. setting.xml 文件中找到 localRepository 标签
  3. 找到 <localRepository></localRepository> 标签对
    • 默认在注释中
  4. 将标签内容修改为已经准备好的 Maven 仓库目录
<localRepository>
    D:\Tool\Maven\software		<!-- 自定义本地仓库位置 -->
</localRepository>
修改镜像仓库
  • Maven 默认的官方仓库地址在国外,访问下载速度较慢

    • 通过配置镜像仓库使用国内的镜像仓库进行下载,提高下载速度
    • Setting.xml 文件中 <mirrors><mirrors/> 标签组中
      • 写在上面的仓库地址优先生效
    <mirrors>
        <!-- 国内阿里云的 Maven 仓库镜像 -->
    	<mirror>
        	<id>alimaven</id>
          	<mirrorOf>central</mirrorOf>
          	<name>aliyun maven</name>
          	<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        </mirror>  
       	<!-- 官方默认国外仓库 -->
       	<mirror>
        	<id>maven-default-http-blocker</id>
          	<mirrorOf>external:http:*</mirrorOf>
          	<name>Pseudo repository to mirror external repositories initially using HTTP.</name>
          	<url>http://0.0.0.0/</url>
          	<blocked>true</blocked>
    	</mirror> 
    </mirrors>
    

POM

  • Project Object Model:项目对象模型
    • DOM(Document Object Model):文档对象模型
  • pom.xmlMaven 的核心配置文件
    • 与构建过程相关的一切设置都在此文件配置
    • 相当于 web.xml 对于动态 Web 工程
属性
基本属性
  • modelVersion

    • 指定 pom.xml 符合的 Maven 模型版本

    • 对 Maven 2 和 3 只能是 4.0.0

    •  <modelVersion>4.0.0</modelVersion>
      
  • packaging

    • 项目类型,描述打包后的输出类型

    • 默认 jar

      • 常见 warpomrarear
    •  <packaging>war</packaging>		<!-- 指定为 war 包,不声明默认 jar 包 -->
      
  • dependenciesdependency:依赖标签,相当于 import

    • dependencies

      • 母标签,中间可以嵌套多个依赖
    • dependency:一组标签添加一个依赖

      • 依赖中添加 jar 包坐标
    • <dependencies>
      	<!-- 导入 MyBatis 依赖 -->
          <dependency>
          	<groupId>org.mybatis</groupId>
              <artifactId>mybatis</artifactId>
              <version>3.5.9</version>
          </dependency>
      </dependencies>
      
  • properties:配置属性

    • Maven 自带配置属性 和 自定义属性

    • properties 内可以使用自定义标签声明变量

      • 使用 ${标签名} 引用变量值
      • 多用于管理依赖的版本号
    • <properties>
          <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>	<!-- 项目构建编码属性 -->
          <maven.compiler.source>1.8</maven.compiler.source>					<!-- 编译源码 JDK 版本 -->
          <maven.compiler.target>1.8</maven.compiler.target>					<!-- 编译目标字节码版本 -->
      </properties>
      
  • buildmaven 进行项目构建时配置信息

    • 例如:指定编译插件 Java 代码的 JDK 版本

    • pluginsplugin:插件配置

      • 配置插件,添加插件坐标导入
      • configuration:配置插件信息
    • <build>
          <!-- 插件配置 -->
      	<plugins>
              <!-- 测试插件版本配置 -->
              <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-surefire-plugin</artifactId>
                  <version>3.0.0-M3</version>
                  <configuration>
                      <forkCount>0</forkCount>
                      <testFailureIgnore>true</testFailureIgnore>
                  </configuration>
              </plugin>
          </plugins>
          <!-- 资源文件配置 -->
          <resources>
              <resource>
                  <directory>src/main/java</directory>
                  	<includes>
                          <include>**/*.properties</include>
                          <include>**/*.xml</include>
                      </includes>
                  </resource>
          </resources>
      </build>
      
  • parent:继承标签,继承父工程 pom.xml 文件的配置

    • <!-- Spring Boot 默认继承父工程配置 -->
      <parent>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-parent</artifactId>
          <version>2.6.4</version>
          <relativePath/> 				<!-- lookup parent from repository -->
      </parent>
      
  • module:聚合,安装各个模块

    • 配置此属性后可以统一打包所有模块
坐标
  • 数学坐标概念

    • 平面中 X、Y 向量唯一定义一个点

    • 空间中 X、Y、Z 向量唯一定义一个点

  • Maven 坐标概念

    • 三个向量在仓库中唯一定义一个 Maven 工程

      1. groupid:组织 ID

        • 一般是公司或组织 域名倒序 + 项目名

        • <groupid>com.baidu.demo</groupid>
          
      2. artifactid:模块、项目名称

        • <artifactid>demo</artifactid>
          
      3. version:项目版本号

        • 三位数字标识 + 版本类别

        • SNAPSHOT

          • 快照,常在开发中使用
          • 不稳定版本
        • LATEST

          • 某个特定构件的最新发布
          • 可能是发布版,或 SNAPSHOT
        • RELAEASE

          • 最后一个发布版
        • <verison>1.0.0-SNAPSHOT</verison>
          
坐标与仓库路径
  • 一般 jar 包被识别为 groupId:artifactId:version 格式

  • <!-- 配置坐标 -->
    <groupid>com.baidu.demo</groupid>
    <artifactid>demo</artifactid>
    <verison>1.0.0-SNAPSHOT</verison>
    <!-- 
    根据配置找到文件路径;坐标定义文件路径:
    com/baidu/demo/demo/1.0.0-SNAPSHOT/demo-1.0.0-SNAPSHOT.jar 
    -->
    
资源插件
编译配置文件
<build>
    <resources>
        <resource>
            <!-- 所在的目录 -->
            <directory>src/main/java</directory>
            <includes>
           		<!-- 包括目录下的 .properties、.xml文件都会扫描到 -->
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <!-- filtering 设置 false,不启用过滤器 -->
            <!-- *.properties 已经起到过滤作用 -->
            <filtering>false</filtering>
        </resource>
    </resources>
</build>
  • 不声明 resources
    • maven 执行编译时把 src/main/resources 目录中文件拷贝到 target/classes 目录中
    • 对于 src/mian/java 目录下非 Java 文件不处理,不拷贝到 target/classes
  • 其他类型文件在 src/mian/java 目录中
    • 运行时需要用到 src/mian/java 目录中文件
      1. build 标签中添加 resoueces 标签
      2. 配置需要扫描处理的文件类型
修改 JDK 语言级别
  • IDEA 中修改语言级别

    • maven 项目更新后会初始化回默认语言级别
      • 很可能和项目语言级别不匹配
  • 使用属性配置项目运行与编译的 JDK 版本

    1. 使用插件形式指定
      • 会强制更改 IDEA 的语言级别配置
    2. 使用属性配置
  • <!-- 属性配置编译jdk 版本,推荐使用 -->
    <properties>
        <!-- 配置编译 .java 文件 和 .class 文件的 jdk 级别 -->
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <!-- 配置源码文件和编译文件的字符编码 -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    </properties>
    
    <!-- 通过编译插件配置源码和编译文件的 jdk 版本,可以强制改变 IDEA 的默认语言级别 -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.8</source>				<!-- 源码 -->
                    <target>1.8</target>				<!-- 编译后字节码 -->
                </configuration>
            </plugin>
        </plugins>
    </build>
    
测试插件更新
  • Maven版本较高时进行打包可能会有编译测试程序不通过

    • 需要更新测试插件
  • <plugins>
    	<plugin>	
        	<groupId>org.apache.maven.plugins</groupId>
        	<artifactId>maven-surefire-plugin</artifactId>
       		<version>3.0.0-M5</version>
        	<configuration>
            	<skipTests>false</skipTests>
            	<testFailureIgnore>true</testFailureIgnore>
            	<forkMode>once</forkMode>
        	</configuration>
    	</plugin>
    </plugins>
    

依赖

  • Maven 解析依赖信息会到本地仓库中查找被依赖的 jar 包

    • 自己开发的 Maven 工程使用 install 命令安装后被放入仓库中
依赖范围
  • <scope>范围</Scope>
    • 三个范围
      • compile
        • 全部阶段都生效
        • 不标明时默认使用的范围
      • test
        • 只针对测试阶段有效
      • provided
        • 只针打包前的流程
        • 不参与部署,不会被打包
作用\依赖范围compiletestprovided
对主程序有效无效有效
对测试程序有效有效有效
打包参与不参与不参与
部署参与不参与不参与
传递性
  • 被导入 jar 包的依赖会自动导入
    • 添加一个依赖后该 jar 包依赖自动导入
  • 直接依赖
    • maven 工程自身导入的依赖
  • 间接依赖
    • 导入依赖所依赖的文件
    • 自动传递导入
  • 作用
    • 可以传递的依赖不必在每个模块工程中重复声明
    • 在最下层工程中依赖一次即可自动传递依赖
  • 注意
    • compile 范围依赖无法传递
依赖排除
  • 是相对于传递性而言的
    • 排除掉传递来的不想要的 jar 包
      • 例如:不稳定 jar 包对项目可能有干扰
  • 在要排除的工程依赖信息中添加 <exclusion>
    • 当前工程排斥此引用依赖后,此工程被其他工程依赖时不会被传递该依赖
<!-- 添加在需要排除特定依赖的 maven 工程中,排除该依赖传递进来 -->
<exclusions>
	<exclusion> 								<!-- 排斥 -->
        <groupId>项目名</groupId>
        <artifactId>模块名</artifactId>
    </exclusion>
</exclusions>
依赖原则
  • 当不同版本的相同 jar 依赖产生冲突
    • 路径较短优先:中间传递的依赖又使用了其他版本的相同依赖
      • 即 传递次数较少优先
    • 路径相同时:同时依赖的 jar 包依赖的不同版本的相同 jar 包
      • 先声明的依赖优先
统一管理依赖版本
  • 比如对 spring 4.0.0 版本统一升级 4.1.1

    • 手动修改不靠谱
  • proerties 标签内使用自定义标签统一声明版本号

    • 凡是需要统一配置引用的都可以使用

      • 例如:字符编码 UTF-8
      <properties>
          <!-- 标签名自定义 -->
          <maven.spring.version>
              <!-- 标签内容自定义 -->
              4.0.0.RELEACE
          </maven.spring.version>
      </properties>
      
    • 需要统一版本的位置使用自定义标签引用声明的版本号

      • 引用格式:${自定义标签}
      <dependency>
      <groupId>...</groupId>
      <artifactId>...</artifactId>
      <version>
          <!-- 引用自定义标签进行版本控制 -->
          ${maven.spring.version}
      </version>
      </dependency>
      
<!-- 添加对第一个 Maven 工程依赖 -->
<dependencies>
    <!-- 需要先将此 Maven 工程安装到仓库 -->
    <dependencies>
        <groupid>com.baidu.demo</groupid>
        <artifactid>demo</artifactid>
        <verison>1.0.0-SNAPSHOT</verison>
        <scope>compile</scope>
    </dependencies>/
</dependencies>

Junit

  • 专门的测试框架

    • 对类中的方法进行测试

    • 每一个方法单独测试

      • 方法是测试的基本单位
  • Maven 借助单元测试批量测试类中的大量方法是否符合预期

  • 使用步骤

    1. 加入依赖

      • <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>
        
    2. 在 Maven 项目中 src\test\java 目录下创建测试程序

      • 命名规范
        • 测试类名:Test+类名
        • 测试方法名:Test+方法名
    3. 测试方法定义规则

      • 方法必须是 public
        • 无返回值
        • 方法名自定义
      • 方法上面加 @Test 注解
        • 导入 org.junit.Test

生命周期

流程
  • 生命周期:构建项目的过程,不能打乱顺序

  • Maven 核心程序定义了抽象的生命周期

    • 各阶段具体任务由插件完成
  • Maven 为更好实现自动化构建的执行特点

    • 无论想要执行生命周期哪个阶段都从此生命周期最初位置开始执行
    • 按照此特点执行到生命周期各个阶段
  • 插件

    • 生命周期各阶段仅定义了要执行的任务
      • 各阶段和插件的目标是对应的
    • 相似的目标由特定插件完成
      • 可将目标看作调用插件功能的命令
  • 例如

    生命周期阶段插件目标插件
    compilecompilemaven-compiler-plugin
    test-compiletestCompilemaven-compiler-plugin
三套周期
  • 三套独立的生命周期,按照阶段顺序排列命令
    1. Clean Lifecycle
      • 进行构建之前进行清理工作
      • pre -clean:执行需在 clean 前完成的工作
      • clean:移除所有上一次构建的文件
      • post -clean执行需要在 clean 之后立刻完成的工作
    2. Default Lifecycle:构建的核心部分:编译、测试、打包、安装、部署等
      1. validate
      2. generate-sources
      3. process-sources
      4. generate-resources
      5. process -resources :复制并处理资源文件至目标目录,准备打包
      6. compile:编译项目的源代码
      7. process-classes
      8. generate-test-sources
      9. process-test-sources
      10. generate-test-resources
      11. process-test-resources:复制并处理资源文件至目标测试目录
      12. test-compile:编译测试源代码
      13. process-test-classes
      14. test:使用合适的单元测试框架运行
        • 测试代码不会被打包或部署
      15. prepare-package
      16. packaeg:接受编译好的代码,打包成可发布的格式,如 jar
      17. pre-integration-test
      18. integration-test
      19. post-integration-test
      20. verify
      21. install:将包安装到本地仓库,以便其他项目依赖
      22. deploy:将最终的包复制到远程的仓库
        • 让其他开发人员与项目共享或部署到服务器上运行
    3. Site Lifecycle
      1. 生成项目报告,站点,发布站点
      2. pre -site:行需要在生成站点文档之前完成的工作
      3. site:生成项目的站点文档
      4. post -site :执行需要在站点文档生成之后立刻完成的工作
        • 并为部署做准备
      5. site -deploy:将生成的站点文档部署到特定的服务器

继承

意义
  • 为什么需要继承

    • 例:junit 依赖

      • junittest 范围依赖,不能传递
        • 必然零散分布在各个模块工程中,很容易造成版本不一致
    • 解决思路:将 junit 依赖统一提取到“父”工程

      • 子工程中声明 junit 依赖时不指定版本
        • 以父工程中统一设定的为准,同时便于统一管理
操作步骤
  1. 创建 maven 工程作为父工程

    • 打包方式为 pom
  2. 在子工程声明对父工程的引用

    • 使用相对于本文件的相对路径避免找不到文件

      <!-- parent 标签声明父工程 -->
      <parent>
          <!-- 引用的父工程坐标 -->
          <groupId>... </groupId>
          <artifactId> ... </artifactId>
          <version> ... </version>
          <!-- 以当前文件为基准父工程 pom.xml 的相对路径 -->
          <relativePath>
      		<!-- ../ 回退到根目录,找到父工程 Parent,再找到 pom.xml 路径 -->
              ../Parent/pom.xml
          </relativePath>
      </parent>
      
  3. 将子工程与父工程的坐标中重复的内容删除

    • 重复路径代码冗余
  4. 父工程统一管理 junit 依赖

    • 子工程中删除 junit 依赖的版本号
      • 不删除版本号意味着重写父工程依赖
      • 将会使用不同版本依赖
  5. 注意:配置继承后执行安装命令需要先安装父工程

聚合

  • 作用:一键安装各模块

  • 配置方式:在总聚合工程配置各个参与聚合的模块

    • <!-- 以在父工程添加聚合举例 -->
      <modules>
          <!-- 指定各子工程的路径 -->
          <module>../Hello</module>
          <module>../demo</module>
      </modules>
      
  • 使用方式:在聚合工程的 pom.xml 文件安装模块

Eclipse 使用 Maven

配置 Maven

  • Maven 插件设置
    • Window -> Preferences -> Maven
      1. installations:指定 Maven 核心程序的位置
        • add 添加本地 Maven 程序
        • 不建议使用自带的 Maven 程序
      2. user setting
        • 指定本地 Maven 程序的 conf/settings.xml 文件位置
        • 获取本地仓库位置
          • 指定 settings.xml 文件自动获取

创建 Maven 工程

  1. 创建 Maven 版 Java 工程

    1. 创建项目时选择 maven 项目
    2. 添加 groupidartifactidversion
    3. 默认选择 jar 方式创建完成
  2. 创建 Maven 版 Web 工程

    1. 创建项目时选择 maven 项目

    2. 添加 groupidartifactidversion

    3. 选择 war 方式创建完成

    4. 修改配置创建 web 工程配置文件

      1. 进入 properties 中选择 Project Facets
      2. 取消选中 Dynamic,再重新选中
        • 自动生成 Web 工程配置文件
    5. 执行 Maven 命令

      • 右键 run as 执行常用命令
        • 没有的命令选择 buidle... 手动输入命令
  3. 创建文件

    • web 工程可能需要更新组件 maven-war-plugin 以支持更高版本 Eclipse
    • 添加依赖完成项目支持
      • 依赖范围是 Compile,运行 Web 项目时服务器可能报空指针异常
        • 依赖 jar 包被打包到 maven 仓库中,tomcat 无法读取

导入 maven 工程

  • File → Import

    1. General:导入普通工程

      1. 需要有 Eclipse 配置文件识别工程
        • 通过 .settings、.classpath、.project 等配置文件识别是 Eclipse 的 java 工程
      2. Existing Projects into Workspaces
        • 选择文件路径,可将目标工程工程复制进来
    2. Maven:导入 Maven 工程

      • Existing Maven Projects

        • 选择文件路径:通过 pom.xml 文件识别 maven 工程

        • 不能将工程复制进来

Web 工程自动部署

  • 手动
    1. 先手动打包生成 war 包
      • package
    2. 将 war 包放到 tomcat 的 webapps 目录下
  • 自动
    • 添加配置
      • 在 eclipse 中使用此配置会导致 tomcat 无法关闭
        • 强制关闭时会占用端口号
    • 在命令行窗口使用
      • 转到 web 项目目录下
      • 使用 mvn deploy 命令部署
<!--配置当前工程构建过程中的特殊配置 -->
<build>
	<finalName>工程名</finalName>
    <!--配置过程需要使用的插件-->
    <plugins>
		<plugin>
    		<!-- cargo 是专门从事启动 Servlet 容器的组织 -->
    		<groupId>org.codehaus.cargo</groupId>
			<artifactId>cargo-maven2-plugin </artifactId>
    		<version>1.2.3</version>
	  		<configuration>
				<!-- 配置当前系统容器位置 -->
				<container>
	  	  			<containerId>tomcat9 </containerId>
	  				<home>D:\Tool\TomCat\apache-tomcat-9.0.13</home>
		  		</container>
				<configuration>
					<type>existing</type>
                	  <home>D:\Tool\TomCat\apache-tomcat-9.0.13</home>
					<properties>
                        <!-- tomcat 默认端口8080无需配置该属性 -->
                        <cargo.servlet.port> 8989 </cargo.servlet.port>
					</properties>
				</configuration>
			</configuration>
			<executions>
                <eecution>
                    <id>cargo-run</id>
                    <!-- 生命周期的阶段 -->
                    <phase>install</phase>
                    <goals>
                        <!--插件目标-->
                        <goal>run</goal>
                    </goals>
                </eecution>
			</executions>
        </plugin>
	</plugins>
</build>

IDEA 使用 Maven

配置 Maven

  • 内置 Maven 组件不方便更改设置
    • 添加本地 Maven 程序,配置到 IDEA
  1. File → setting → 搜索 maven
    • 添加本地 Maven
      • 设置 Maven setting.xml 文件位置
      • 设置 Maven 仓库位置
        • 设置 setting.xml 文件后自动获取
    • Runner 设置
      • VM Options 设置
        • -DarchetypeCatalog=internal
          • maven 项目创建时会连接网络下载模板文件,管理大量 Maven 工程时会加载缓慢
          • 添加此参数从本地加载模板,不会再下载
      • JRE :配置项目使用的 JDK
  2. File → new project setting
    • 配置新项目通用模板
      • 配置内容跟上面相同

创建 Maven 工程

  1. 创建新项目
  2. 选择 Maven
  3. Create from archetype:根据模板创建新项目
    • maven-archetype-quickstart:普通 java 项目
      • 设置项目名,可以添加父项目
      • 修改 id 和 版本
    • maven-archetype-webapp:web工程项目

导入 Mavnen 工程

  • 和正常导入模块流程相同

    • 根据 pom.xml 文件自动识别 Maven 项目

Maven 依赖

  • Maven 依赖查找网站

    • https://mvnrepository.com
      
  • Maven 插件官方网站

    • https://maven.apache.org/plugins/index.html
      
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值