项目管理工具Maven

Maven的作用

  1. 管理jar文件
  2. 自动下载jar文件
  3. 自动管理依赖jar文件,比如a.jar依赖b.jar那么maven会自动帮你下载
  4. 能管理jar包的版本
  5. 编译
  6. 测试
  7. 打包文件为jar或者war
  8. 部署项目

构建(面向过程的)

清理:将之前构建的代码删除掉,准备重新编译
编译:将java源代码批量编译成class文件
测试:测试代码,也能同时测试多个代码
报告:生成测试结果文件,测试通过没有
打包:将项目中所有的class文件,配置文件等所有的资源放到一个压缩文件
中,这个压缩文件通常是结果文件,通常是jar或者是war,java应用
是jar,web应用是war。
安装:将打包(上面那个步骤)生成的结果文件放到本地仓库中
部署:将程序安装好可以运行

Maven的核心概念

主要概念:

  1. pom:project object model,(项目对象模型)maven把一个项目当做一个模型使用。控制maven构建项目的过程,管理jar依赖。
  2. 约定的目录结构:maven的目录和文件的位置都是规定的
  3. 坐标:是一个唯一的字符串,用来表示资源的
  4. 依赖管理:管理你的项目中可以使用的jar文件。
  5. 仓库管理:资源存放的位置
  6. 生命周期:maven工具构建项目的过程
  7. 插件和目标:执行maven构建的时候用的工具是插件
  8. 继承
  9. 聚合

maven的使用

bin目录:执行程序,主要是mvn.cmd
conf目录:settings.xml配置maven

注意:使用maven需要配置JAVA_HOME环境变量(有时也需要配置M2_HOME环境)

maven的目录结构

Hello/
-------/src
------------/main
--------------------/java 放置主程序的java源代码
--------------------/resources 放置主程序的配置文件
------------/test
--------------------/java 测试文件源代码
--------------------/resources 测试代码配置文件
-------/pom.xml maven核心文件(必须有)

mvn compile命令

第一次执行该命令,会进入自动下载很多东西,这些东西是很多的jar文件,他们是一些插件,实际上是java类。
默认的保存位置是c盘登录的系统用户名下的m2/repository下面(默认仓库)
执行后,会生成一个target目录(结果目录),maven编译后的java文件都放在target中

仓库

仓库是用来保存maven需要的插件(jar文件)和项目所需的jar包。

分类:

  1. 本地仓库:就在本台计算机的某个位置(文件夹)
  2. 远程仓库:
    2.1: 中央仓库:全世界的开发人员都共同使用的仓库
    2.2:中央仓库镜像:对于每个洲都有一个中央仓库的备份,类 似于代理。
    2.3:私服:局域网中的仓库,经常是公司的内部,不对外使用。

仓库的访问次序(maven自动)本地–》私服–》镜像–》中央
如果访问远程,每次查找到都会在本地存储一份,下次就在本地查找

修改本机仓库(下载位置)

打开maven的安装目录,打开conf文件夹中的settings.xml
在这里插入图片描述
localRepository中设置你想要保存的仓库位置

pom.xml

  1. modelVersion maven模型的版本
  2. grouopId:组织id,一般是公司域名的倒写,也可是域名+项目名
  3. artifactId:项目名称
  4. version:三位数字版本,如果还处于开发阶段通常是1.snapshot
  5. 上面三个(groupId,artifactId,version,简称gav)表示坐标,用来标识唯一一个项目。
  6. packaging:将项目指定打包成指定的文件(jar,war,rar,ear,pom),默认是jar
  7. denpendencies和denpendency:指定依赖
  8. properties:设置属性
  9. build:maven配置文件时,配置信息,如编译时使用的jdk版本
  10. parent:继承,多个模块需要相同的配置,如坐标相同,就可以声明为这个,类似java继承
  11. moduls:聚合

maven常用命令(部署到服务器)

maven使用命令实际上是使用插件功能(jar文件)

  1. mvn clean:清理上次生成的编译文件
  2. mvn compile:编译src/main下的java文件到classes下,同时将resources下的配置文件,全部拷贝到classes目录下。
  3. mvn test-compile:编译src/test下的java文件
  4. mvn test:生成surefire-reports目录生成报告文件,批量执行测试代码
  5. mvn package:将项目打包成指定的压缩文件
  6. mvn install:将压缩文件放入到本地的仓库中
  7. mvn deploy:会把本工程打包,放到本地仓库和私服还有web容器中

这里重点讲一下最后一个命令(因为挺方便的,自己试了三四个小时才弄好)

我们自己写了一个web项目,当我们想把这个项目挂到服务器上让别人访问(上线),就得手动拷贝war包过去放到webapp目录下,maven是很好用的工具,可以帮我们一键热部署到tomcat服务器上
这里我用的服务器是阿里云的。idea 2019+maven 3+tomcat9
版本不同配置也不同,今天差点没给我整吐了。

  1. 创建maven的web工程(网上很多教程说要设置maven根目录下的settings.xml文件,然后添加server节点)
    在这里插入图片描述
    然后我没加也能照样部署,这个过程可以跳过
  2. 这里才是第一步。。。在服务器设置账号密码,tomcat的conf目录下的tomcat-users.xml添加如下信息
<role rolename="manager-gui"/>
        <role rolename="manager-script"/>
        <user username="lzb" password="lzbroot" roles="manager-gui,manager-script"/>

这里的账号密码自己设置
在这里插入图片描述
3. 最重要的一点来了!设置webapp目录下的context.xml文件
4. 在你maven的pom.xml添加如下信息,这里很重要在这里插入图片描述
他这文件里,默认allow不是这样的,这是允许访问tomcat的IP段,是一个正则表达式,修改成上面这种就谁都能访问了,我在这卡了三个小时。。。。。。

  1. 后面的都跟网上教程差不多,配置你的web中的pom.xml文件
<plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.3</version>
          <configuration>
            <source>1.8</source>
            <target>1.8</target>
          </configuration>
        </plugin>


        <plugin>
          <groupId>org.apache.tomcat.maven</groupId>
          <artifactId>tomcat7-maven-plugin</artifactId>
          <version>2.2</version>
          <configuration>
            <!-- 直接访问 Tomcat 服务器的 manager -->
            <url>http://60.205.170.141/manager/text</url>
            <server>tomcat9</server>
            <port>80</port>
            <username>lzb</username>
            <password>lzbroot</password>
            <update>true</update>
            <path>/mvn</path>
          </configuration>
        </plugin>

url后面那个manager/text是必须加的
6. 运行命令mvn clean 然后mvn tomcat7:deploy(之后重新部署是mvn tomcat7:redeploy),然后就完事了在这里插入图片描述
绑定成功。。真的舒服

总结:
服务器上的context.xml和tomcat-users.xml进行配置
本机直接添加插件和对应的信息,运用命令就可一键构建

插件

在bulid下定义插件

		<plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.3</version>
          <configuration>
            <source>1.8</source>
            <target>1.8</target>
          </configuration>
        </plugin>

其中的configuration中的信息:(这些也可以在properties下设置)
source:配置jdk的版本为1.8
target:项目需要在1.8的版本上运行

ide中使用Maven

maven-archetype-quickstart:普通javase项目
maven-archetype-webapp:javaweb项目

在Vm Option中加上 -DarchetypeCatelog = internal不会自动下载模板,可以加快maven的构建速度

<properties>
maven构建项目使用utf-8编码
	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
编译java所使用的jdk版本
	<maven.compiler.source>1.7</maven.compiler.source>
项目应该运行在指定的jdk版本之上
	<maven.compiler.target>1.7</maven.compiler.target>
</properties>

依赖管理

依赖的范围

作用:指定哪些时候使用对应的依赖

  1. compile:范围最大,会在需要编译的阶段使用
  2. test:只在测试的时候使用
  3. provided:只在测试和运行时有效,对于打包或者部署由提供者提供,项目不自带
    在这里插入图片描述
    在坐标后面(gav)添加scope
<dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>

在这里插入图片描述
这个是使用test和provided的效果
在这里插入图片描述
这个则是使用compile的效果

属性设置

在properties中进行属性设置
其中重要的一个是自定义标签(变量名)
在properties中使用自己定义的标签,在需要的地方使用${变量名}就可以引用到自己设置的值,如果有多个,则只要改一个即可
在这里插入图片描述

资源插件

当我们使用mvn compile命令时,会吧src/main/java/resources下的文件全部拷贝到target/classes下面,但是如果我们在src/main/java中不只有java文件,还有一些配置文件,他默认是不会拷贝的,这时候就需要一个资源插件来告诉maven帮我们把指定的文件拷贝过来

<build>
    <resources>
      <resource>
        <directory>src/main/java</directory>
        <includes>
            <include>
              *.properties
            </include>
            <include>
              *.xml
            </include>
        </includes>

        <filtering>false</filtering>
      </resource>
    </resources>
  </build>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值