Maven笔记

Maven的作用

Maven的作用我们可以分成三类:

(1)项目构建:提供标准的,跨平台的自动化构建项目的方式

(2)依赖管理:方便快捷的管理项目依赖的资源(jar包),避免资源间的版本冲突等问题

(3)统一开发结构:提供标准的,统一的项目开发结构,如下图所示:

示意图1

各目录存放资源类型说明:

  • src/main/java:项目java源码

  • src/main/resources:项目的相关配置文件(比如mybatis配置,xml映射配置,自定义配置文件等)

  • src/main/webapp:web资源(比如html,css,js等)

  • src/test/java:测试代码

  • src/test/resources:测试相关配置文件

  • src/pom.xml:项目pom文件

仓库

创建一个工程

  1. 创建pom.xml文件,放到src文件中
<?xml version="1.0" encoding="UTF-8"?>

<project 
  xmlns="http://maven.apache.org/POM/4.0.0" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <groupId>com.itheima</groupId>
  <artifactId>project-java</artifactId>
  <version>1.0</version>
  <packaging>jar</packaging>

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

</project>
  1. cmd语法
  • mvn compile #编译

  • mvn clean #清理

  • mvn test #测试

    • 测试文件在这里~\target\surefire-reports
  • mvn package #打包

    • 打包前会compile,test

    • 打包源程序 ~\target

  • mvn install #安装到本地仓库

  • 我的在这个位置D:\maven\repository

  1. mvn archetype:generate

    直接创建一个工程 前面是现成的项目变成工程

idea创建Maven工程

  • 快捷键Ctrl+Alt+Shift+s
  1. 创建新项目
  2. 文件 -> 新建 -> 新模块

idea操作

  1. 创建完记得添加依赖

image-20221014212052115

web

在web.xml中加插件之后才能tomcat7 run

<build>
    <plugins>
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
        <configuration>
          <port>80</port>
          <path>/</path>
        </configuration>
      </plugin>
    </plugins>
  </build>

依赖管理

依赖配置

一个工程配置的依赖,可以调用依赖所用到的依赖,这里前面的依赖可以是现成的,也可以是自己开发的项目。

前一个依赖是直接依赖,后面的是间接依赖

例如这样

<dependency>
  <groupId>com.itheima</groupId>
  <artifactId>SpringWeb</artifactId>
  <version>1.0-SNAPSHOT</version> 
</dependency>

SpringWeb为本地的一个工程,位置在com.itheima

这样将这段依赖添加到别的工程中,别的工程就可以用SpringWeb工程以及其依赖

冲突

  • 冲突就看谁先依赖到,即深度

可选依赖

  • <optional>false</optional>加到自己的依赖里面,别人调用你的时候无法调用你隐藏的这个依赖

排除依赖

将这个加入自己的某个依赖后就可以不调用这个依赖的log4j依赖

  • <exclusions>
      <exclusion>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
      </exclusion>
    </exclusions>
    

可选是别人无法用你的依赖,排除是排除自己依赖的依赖

依赖范围

  • <scope> </scope>
    • compile
    • test
    • provided
    • runtime

image-20221018214245725

生命周期与插件

生命周期

maven生命周期大体分为三类

  • clear生命周期
  • default生命周期
    • 里面包含好多具体的阶段
  • site构建生命周期

插件

可以通过插件与生命周期绑定

放到插件下面,表示走到生命周期generate-resources时运行jar操作(打包源代码)

使用executions要有插件maven-source-plugin

<groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>3.2.1</version>
<executions>
  <execution>
    <goals>
      <goal>jar</goal>
    </goals>
    <phase>generate-resources</phase>
  </execution>
</executions>

模块

分模块开发

别的模块要调用其他模块就加dependency就可以

  1. 创建对应模块

  2. 书写对应模块

  3. 通过maven指令安装模块到本地仓库

聚合与继承

父工程的打包方式是pom,默认是jar,web工程是war

聚合

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

构建关系是根据依赖来的跟这里写的顺序没有关系

<modules>
  <module>路径1/工程名1</module>
  <module>路径2/工程名2</module>
  <module>路径3/工程名3</module>
</modules>

继承

pom.xml中配置的继承

  1. 首先在子工程中继承父工程 parent
<parent>
      <groupId>com.itheima</groupId>
      <artifactId>SpringWeb</artifactId>
      <version>1.0-SNAPSHOT</version>
      <relativePath>相对路径</relativePath>
</parent>
  1. 依赖管理

父工程中如果直接dependencies,所有子工程都会继承

加了dependencyManagement还需要在需要这个继承的子工程中配置,不用加版本号就好,会从父工程中取

<dependencyManagement>
      <dependencies>
     	 可选依赖
      </dependencies>
</dependencyManagement>

属性

属性可以集中版本管理

<properties>
    <自定义标签名称>内容</自定义标签名称>
    <spring-webmvc.verson>5.2.10.RELEASE</spring-webmvc.verson>
</properties>

配置文件加载属性

将pom中的属性调整为别的部分(就是directory中的路径)也可以访问

${project.basedir}表示当前目录

<build>
    <resources>
      <resource>
        <directory>${project.basedir}/...</directory>
        <filtering>true</filtering>
      </resource>
    </resources>
</build>
  • 可以忽略web.xml检查的配置

image-20221020170516896

版本管理

image-20221020170723104

多环境开发

  1. 定义多环境
<!--  自定义多环境-->
  <properties>
<!--    自定义具体的环境,可以配置多个profile-->
    <profile>
<!--      名称-->
      <id>env_dep</id>
<!--      要配置的数据-->
      <properties>
        <jdbc.url>.....1</jdbc.url>
      </properties>
<!--      是否为默认打开-->
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
    </profile>
  </properties>
  1. 使用多环境

mvn 指令 -P 环境定义id

跳过测试

  • mvn 指令 -D skipTests
  • 细粒度控制跳过插件(选择哪些要跳过)
<plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.12.4</version>
          <configuration>
              <!--是否跳过-->
            <skipTests>false</skipTests>
              <!--跳过哪些,要写到具体的java文件-->
            <includes>
              <include></include>
            </includes>
              <!--不跳过哪些-->
            <excludes>
              <exclude></exclude>
            </excludes>
          </configuration>
</plugin>

私服

  • 用nexus

    仓库分类

image-20221020173834890

配置

先到maven安装目录,conf文件夹下面的setting.xml

server是对私服的权限配置

<server>
      <id>私服名</id>
      <username>账号</username>
      <password>密码</password>
</server>

mirror映射配置地址

<mirror>
      <id>仓库组(group)的名字</id>
      <mirrorOf>*</mirrorOf>
      <url>地址</url>
</mirror>

上传于下载

上传

  • mvn deploy指令是发布到私服

将要上传的工程pom.xml进行配置

  <distributionManagement>
    <repository>
      <id>正式版</id>
      <url>地址</url>
    </repository>
    <snapshotRepository>
      <id>测试版</id>
      <url>地址</url>
    </snapshotRepository>
  </distributionManagement>

然后deploy即可

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值