maven基础篇(一)

简介: maven基础篇

前言



chapter1 maven的概述


为什么要学习 maven ?


  • 管理规模庞大的 jar 包,需要专门工具。
  • 脱离 IDE 环境执行构建操作,需要专门工具。


什么是maven


Maven 是 Apache 软件基金会组织维护的一款专门为 Java 项目提供构建依赖管理支持的工具。


构建


Java 项目开发过程中,构建指的是使用『原材料生产产品』的过程。


  • 原材料
  • Java 源代码
  • 基于 HTML 的 Thymeleaf 文件
  • 图片
  • 配置文件
  • ......
  • 产品
  • 一个可以在服务器上运行的项目
  • 构建过程包含的主要的环节:
  • 清理:删除上一次构建的结果,为下一次构建做好准备
  • 编译:Java 源程序编译成 *.class 字节码文件
  • 测试:运行提前准备好的测试程序
  • 报告:针对刚才测试的结果生成一个全面的信息
  • 打包
  • Java工程:jar包
  • Web工程:war包
  • 安装:把一个 Maven 工程经过打包操作生成的 jar 包或 war 包存入 Maven 仓库
  • 部署
  • 部署 jar 包:把一个 jar 包部署到 Nexus 私服服务器上
  • 部署 war 包:借助相关 Maven 插件(例如 cargo),将 war 包部署到 Tomcat 服务器上


依赖


如果 A 工程里面用到了 B 工程的类、接口、配置文件等等这样的资源,那么我们就可以说 A 依赖 B。


  • 依赖管理中要解决的具体问题:
  • jar 包的下载:使用 Maven 之后,jar 包会从规范的远程仓库下载到本地
  • jar 包之间的依赖:通过依赖的传递性自动完成
  • jar 包之间的冲突:通过对依赖的配置进行调整,让某些jar包不会被导入


maven的工作机制

1.png


chapter2 maven的安装与配置


Maven核心程序解压与配置


1、Maven 官网地址


首页:


Maven – Welcome to Apache Maven(opens new window)


下载页面:


Maven – Download Apache Maven


下载链接:

1.png

2、解压Maven核心程序


核心程序压缩包:apache-maven-3.8.4-bin.zip,解压到非中文、没有空格的目录。例如:


1.png


在解压目录中,我们需要着重关注 Maven 的核心配置文件:conf/settings.xml


3、指定本地仓库


本地仓库默认值:用户目录/.m2/repository。所以建议将 Maven 的本地仓库放在其他盘符下。配置方式如下:


<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<localRepository>D:\maven-repository</localRepository>


本地仓库这个目录,我们手动创建一个空的目录即可。


记住:一定要把 localRepository 标签从注释中拿出来


注意:本地仓库本身也需要使用一个非中文、没有空格的目录。


4、配置阿里云提供的镜像仓库


Maven 下载 jar 包默认访问境外的中央仓库,而国外网站速度很慢。改成阿里云提供的镜像仓库,访问国内网站,可以让 Maven 下载 jar 包的时候速度更快。配置的方式是:


①将原有的例子配置注释掉


<!-- <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> -->


②加入我们的配置


将下面 mirror 标签整体复制到 settings.xml 文件的 mirrors 标签的内部


<mirror>
  <id>nexus-aliyun</id>
  <mirrorOf>central</mirrorOf>
  <name>Nexus aliyun</name>
  <url>http://maven.aliyun.com/nexus/content/groups/public</url>
 </mirror>


5、配置 Maven 工程的基础 JDK 版本


如果按照默认配置运行,Java 工程使用的默认 JDK 版本是 1.5,而我们熟悉和常用的是 JDK 1.8 版本。修改配置的方式是:将 profile 标签整个复制到 settings.xml 文件的 profiles 标签内。


<profile>
   <id>jdk-1.8</id>
   <activation>
  <activeByDefault>true</activeByDefault>
  <jdk>1.8</jdk>
   </activation>
   <properties>
  <maven.compiler.source>1.8</maven.compiler.source>
  <maven.compiler.target>1.8</maven.compiler.target>
  <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
   </properties>
 </profile>


检查环境变量


检查 JAVA_HOME 配置是否正确


Maven 是一个用 Java 语言开发的程序,它必须基于 JDK 来运行,需要通过 JAVA_HOME 来找到 JDK 的安装位置。


1.png


可以使用下面的命令验证:


C:\Users\Administrator>echo %JAVA_HOME%
D:\software\Java
C:\Users\Administrator>java -version
java version "1.8.0_141"
Java(TM) SE Runtime Environment (build 1.8.0_141-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.141-b15, mixed mode)


配置MAVEN_HOME

1.png


  • 配置环境变量的规律:
  • XXX_HOME 通常指向的是 bin 目录的上一级
  • PATH 指向的是 bin 目录


配置PATH

1.png

验证


C:\Users\Administrator>mvn -v
Apache Maven 3.8.4 (9b656c72d54e5bacbed989b64718c159fe39b537)
Maven home: D:\software\apache-maven-3.8.4
Java version: 1.8.0_141, vendor: Oracle Corporation, runtime: D:\software\Java\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"


  • 环境变量检查完毕后,看第三章的 实验一,使用 maven 命令生成maven 工程


chapter3 使用 Maven:命令行环境


  • 使用原始的dos窗口完成的Maven 工程的创建
  • 把握住重点,了解核心概念即可,然后命令跟着敲就行,没必要死机硬背


实验一:根据坐标创建 Maven 工程


1、Maven 核心概念:坐标


①Maven中的坐标


  • 向量的说明
  • groupId:公司或组织的 id
  • artifactId:一个项目或者是项目中的一个模块的 id
  • version:版本号
  • 三个向量的取值
  • groupId:公司或组织域名的倒序,通常也会加上项目名称
  • 例如:com.atguigu.maven
  • artifactId:模块的名称,将来作为 Maven 工程的工程名
  • version:模块的版本号,根据自己的需要设定
  • 例如:SNAPSHOT 表示快照版本,正在迭代过程中,不稳定的版本
  • 例如:RELEASE 表示正式版本
  • 举例:
  • groupId:com.atguigu.maven
  • artifactId:pro01-atguigu-maven
  • version:1.0-SNAPSHO


②坐标和仓库中 jar 包的存储路径之间的对应关系


坐标:


<groupId>javax.servlet</groupId>
  <artifactId>servlet-api</artifactId>
  <version>2.5</version>


上面坐标对应的 jar 包在 Maven 本地仓库中的位置:【一定要学会根据坐标到本地仓库中找到对应的 jar 包


Maven本地仓库根目录\javax\servlet\servlet-api\2.5\servlet-api-2.5.jar

2、实验操作


创建目录作为后面操作的工作空间


例如:D:\maven-workspace\space201026


此时我们已经有了三个目录,分别是:


  • Maven 核心程序:中军大帐
  • Maven 本地仓库:兵营
  • 本地工作空间:战场


②在工作空间目录下打开命令行窗口

1.png

③使用命令生成Maven工程

1.png


运行 mvn archetype:generate 命令


下面根据提示操作

Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 7:【直接回车,使用默认值】
Define value for property 'groupId': com.atguigu.maven
Define value for property 'artifactId': pro01-maven-java
Define value for property 'version' 1.0-SNAPSHOT: :【直接回车,使用默认值】
Define value for property 'package' com.atguigu.maven: :【直接回车,使用默认值】
Confirm properties configuration: groupId: com.atguigu.maven artifactId: pro01-maven-java version: 1.0-SNAPSHOT package: com.atguigu.maven Y: :【直接回车,表示确认。如果前面有输入错误,想要重新输入,则输入 N 再回车。】

1.png

④调整


Maven 默认生成的工程,对 junit 依赖的是较低的 3.8.1 版本,我们可以改成较适合的 4.12 版本。


  • 打开工程下的 pom.xml 配置文件更改
  • 自动生成的 App.java 和 AppTest.java 可以删除。


<!-- 依赖信息配置 -->
<!-- dependencies复数标签:里面包含dependency单数标签 -->
<dependencies>
 <!-- dependency单数标签:配置一个具体的依赖 -->
 <dependency>
  <!-- 通过坐标来依赖其他jar包 -->
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.12</version>
  <!-- 依赖的范围 -->
  <scope>test</scope>
 </dependency>
</dependencies>


⑤自动生成的 pom.xml 解读

<!-- 当前Maven工程的坐标 -->
  <groupId>com.atguigu.maven</groupId>
  <artifactId>pro01-maven-java</artifactId>
  <version>1.0-SNAPSHOT</version>
  <!-- 当前Maven工程的打包方式,可选值有下面三种: -->
  <!-- jar:表示这个工程是一个Java工程  -->
  <!-- war:表示这个工程是一个Web工程 -->
  <!-- pom:表示这个工程是“管理其他工程”的工程 -->
  <packaging>jar</packaging>
  <name>pro01-maven-java</name>
  <url>http://maven.apache.org</url>
  <properties>
  <!-- 工程构建过程中读取源码时使用的字符集 -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <!-- 当前工程所依赖的jar包 -->
  <dependencies>
  <!-- 使用dependency配置一个具体的依赖 -->
    <dependency>
    <!-- 在dependency标签内使用具体的坐标依赖我们需要的一个jar包 -->
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
    <!-- scope标签配置依赖的范围 -->
      <scope>test</scope>
    </dependency>
  </dependencies>
目录
相关文章
|
Java Maven 开发工具
maven基础篇(四)
maven基础篇
165 1
|
XML Java 应用服务中间件
maven基础篇(三)
maven基础篇
169 1
|
XML 存储 Java
Maven基础学习——依赖配置(1):配置同一项目下的三个工程
选择Maven后直接选择下一步(注意这里不需要进行任何操作,不用搜索quickstart,直接点击下一步即可)
235 0
Maven基础学习——依赖配置(1):配置同一项目下的三个工程
|
Java 应用服务中间件 Maven
Maven基础学习——tomcat插件配置(含web工程配置)
Maven基础学习——tomcat插件配置(含web工程配置)
1569 0
Maven基础学习——tomcat插件配置(含web工程配置)
|
IDE Java Apache
|
JavaScript Java Maven
|
存储 JavaScript Java
Maven 基础
Maven 基础
143 0
Maven 基础
|
存储 IDE 前端开发
Maven基础
Maven基础
130 0
Maven基础
|
存储 IDE 前端开发
Maven基础
Maven基础
96 0
Maven基础
|
Java Linux Maven
Linux java基础环境搭建 ->nexus maven私服
Linux java基础环境搭建 ->nexus maven私服
132 0