Maven初步学习

Maven初步学习

一.Maven简单介绍

1.1 软件构建过程

  • 清理 mvn clean
  • 编译 mvn compile
  • 测试 mvn test
  • 报告
  • 打包 mvn package
  • 安装 mvn install
  • 部署 mvn deploy

1.2 Maven核心概念

①POM
②约定的目录结构
③坐标
④依赖管理
⑤仓库管理
⑥生命周期
⑦插件和目标
⑧继承
⑨聚合

1.3 安装Maven环境

  1. 需要先安装JDK,因为maven本身就是用java编写

  2. 下载并解压maven安装程序 传送门

  3. 配置Maven的环境变量

MAVEN_HOME=d:/apache-maven-3.3.9 或者 M2_HOME=d:/apache-maven-3.3.9
path=%MAVEN_HOME%/bin;或者%M2_HOME%/bin;
  1. 验证是否安装成功
mvn -v

二.Maven的核心概念详解

2.1 Maven工程约定目录结构

2.1.1 目录结构

根目录:工程名
|—src:源码
|—|---main:存放主程序
|—|---|—java:java源码文件
|—|---|—resources:存放框架的配置文件
|—|---test:存放测试程序
|—|---|—java:java源码文件
|—|---|—resources:存放框架的配置文件
|—pop.xml:maven的核心配置文件

2.1.2 设置本机存放资源的目录位置
  1. 修改maven的配置文件,maven安装目录/conf/settings.xml
    先备份一下(CV大法)

  2. 修改 <localRepository> //默认是注释状态
    修改为 <localRepository>D:/ProgramFiles/Maven/Maven_Repository</localRepository>

    示例图片

2.2 POM文件

2.2.1 POM介绍

即Project Object Model项目对象模型。Maven把一个项目的结构和内容抽象成一个模型,在xml文件中进行声明,以方便进行构建和描述,pom.xml是Maven的灵魂

2.2.2 pom.xml 选项
<?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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion> //Maven的版本
   //以下三者是项目的唯一坐标
  <groupId>com.echochao</groupId> //组织id,一般域名倒写
  <artifactId>project01-echochao-maven</artifactId> //项目名称
  <version>1.0-SNAPSHOT</version> //项目版本号,如果是不稳定版本带-SNAPSHOT
  <packaging>jar</packaging>
    //packing,项目打包类型,可以是 jar、 war、 rar、 ear、 pom,默认是 jar
  <name>project01-echochao-maven</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

    //配置属性,是用来定义一些配置属性的,例如project.build.sourceEncoding(项目构建源码编码方式),可以设置为UTF 8,防止中文乱码,也可定义相关构建版本号,便于日后统一升级
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>
  
   //依赖管理
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

    //构建,例如设置编译插件的jdk版本
  <build>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

2.3 仓库

2.3.1 仓库的概念

存放maven使用的jar 和 我们项目使用的jar

2.3.2 仓库存放

1.Maven的插件,插件也是一些 jar,这些 jar可以完成一定的功能
2.我们自己开发项目的模块
3.第三方框架或工具的 jar包

2.3.3 仓库的类别
  1. 本地仓库:就是你的个人计算机上的文件夹,存放各种jar

  2. 远程仓库, 在互联网上的,使用网络才能使用的仓库

    1. 中央仓库,最权威的, 所有的开发人员都共享使用的一个集中的仓库
    2. 中央仓库的镜像:就是中央仓库的备份, 在各大洲,重要的城市都是镜像
    3. 私服,在公司内部,在局域网中使用的,不是对外使用的

    访问顺序

2.4 生命周期

maven的生命周期就是maven构建项目的过程,清理,编译,测试,报告,打包,安装,部署

2.5 常用命令

2.5.1 常见命令
  1. mvn clean 清理 (会删除原来编译和测试的目录,即 target目录,但是已经 install到仓库里的包不会删除 )

  2. mvn compile 编译主程序 (会在当前目录下生成一个 target,里边存放编译主程序之后生成的字节码文件 )

  3. mvn test compile 编译测试程序 (会在当前目录下生成一个 target,里边存放编译测试程序之后生成的字节码文件 )

  4. mvn test 测试 (会生成一个目录 surefire reports,保存测试结果 )

  5. mvn package 打包主程序 (会编译、编译测试、测试、并且按照 pom.xml配置把主程序打包生成 jar包或者 war包 )

  6. mvn install 安装主程序 (会把本工程打包,并且按照本工程的坐标保存到本地仓库中 )

  7. mvn deploy 部署主程序 (会把本工程打包,按照本工程的坐标保存到本地库中,并且还会保存到私服仓库中。还会自动把项目部署到 web容器中 )。

    注意:执行以上命令必须在命令行进入pom.xml所在目录!

2.5.2 命令测试
  1. 单元测试(测试方法):用的是junit, junit是一个专门测试的框架(工具)。junit测试的内容: 测试的是类中的方法, 每一个方法都是独立测试的。方法是测试的基本单位(单元)。

  2. 使用步骤

    1. 加入依赖,在pom.xml加入单元测试依赖

      <!-- 单元测试 -->
      <dependency>
      	<groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.11</version>
          <scope>test</scope>
      </dependency>
      
    2. 在maven项目中的src/test/java目录下,创建测试程序

      • 推荐的创建类和方法的提示:
        1.测试类的名称 是Test + 你要测试的类名
        2.测试的方法名称 是:Test + 方法名称

      • 例如测试HelloMaven ,
        创建测试类 TestHelloMaven

      @Test
      public void testAdd(){
      	测试HelloMaven的add方法是否正确
      }
      
      • 其中testAdd叫做测试方法,它的定义规则

        • 方法是public的,必须的
        • 方法没有返回值, 必须的
        • 方法名称是自定义的,推荐是Test + 方法名称
        • 在方法的上面加入 @Test
  3. mvn compile

    编译main/java/目录下的java 为class文件, 同时把class拷贝到 target/classes目录下面把main/resources目录下的所有文件都拷贝到target/classes目录下

三.IDEA中Maven

3.1 设置Maven

第一步

第二步

第三步

3.2 新建项目

勾选选项

3.3 日常使用

常见操作

四. 依赖管理

4.1 依赖的范围
compile(默认)testprovided
对主程序是否有效
对测试程序是否有效
是否参与打包
是否参与部署

五. 常见设置

5.1 全局变量
  • 在Maven的 pom.xml文件中, 用于定义全局变量, POM中通过 ${property_name}的形式引用变量的值。

  • 定义全局变量:

<properties>
<spring.version>4.3.10.RELEASE</spring.version>
</properties>
  • 引用全局变量
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring context</artifactId>
	<version>${spring.version}</version>
</dependency>
5.2 指定资源位置
  • src/main/java和 src/test/java 这两个目录中的所有 *.java文件会分别在 comile和 test comiple阶段被编译,编译结果分别放到了 target/classes和 targe/test classes目录中,但是这两个目录中的其他文件都会被忽略掉,如果需要把 src目录下的文件包放target/classes目录,作为输出的 jar一部分。需要指定资源文件位置。以下内容放到标签中。

  • 设置代码

<build>
	<resources>
	<resource>
	<directory>src/main/java</directory><!--所在的目录-->
	<includes><!--包括目录下的.properties,.xml 文件都会扫描到-->
	<include>**/*.properties</include>
	<include>**/*.xml</include>
	</includes>
	<!—filtering 选项 false 不启用过滤器, *.property 已经起到过滤的作用了 -->
	<filtering>false</filtering>
	</resource>
	</resources>
</build>

报错集合

1.第一次使用 mvn compile

报错图片

结合网上查阅资料,是由于文件未完全关闭导致。用notepad++查看文件时,关闭后文件还保持打开的状态,在应用内关闭后在关闭应用即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值