Maven入门:自动化构建工具的基本概念与配置

一、什么是Maven

目前无论使用IDEA还是Eclipse等其他IDE,使用里面 ANT 工具帮助我们进行编译,打包运行等工作。Apache基于ANT进行了升级,研发出了全新的自动化构建工具Maven。

Maven使用项目对象模型(POM-Project Object Model,项目对象模型)的概念,可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。在Maven中每个项目都相当于是一个对象,对象(项目)和对象(项目)之间是有关系的。关系包含了:依赖、继承、聚合,实现Maven项目可以更加方便的实现导jar包、拆分项目等效果。

下载地址:maven.apache.org/

二、目录结构

  • bin:存放的是执行文件,命令
  • conf:存放配置文件,里面的settings.xml是maven的全局配置文件。

在IDEA中直接集成了Maven,setting配置存放在.m2目录下,如果没有该目录可以手动执行一下maven命令:mvn help:system

三、远程仓库和本地仓库

远程仓库指通过各种协议(如file://http://)访问的其它类型的仓库。不在本机中的一切仓库,都是远程仓库。远程仓库又分为中央仓库本地私服仓库

远程仓库可能是第三方搭建的真实的远程仓库,用来提供他们的构件下载(例如repo.maven.apache.orguk.maven.org是Maven的中央仓库)。

远程仓库也可以是公司自己在局域网搭建的Maven仓库,用来在开发团队间共享私有构件和管理发布的。

默认的远程仓库使用的Apache提供的中央仓库:mvnrepository.com/

本地仓库指本机的一份拷贝,用来缓存远程下载,包含你尚未发布的临时构件。

四、仓库配置

settings.xml中:主要配置了三个信息:

  1. 本地仓库地址
  2. 镜像仓库信息
  3. 指定JDK的版本

配置本地仓库

本地仓库是开发者本地电脑中的一个目录,用于缓存从远程仓库下载的构件。默认的本地仓库是${user.home}/.m2/repository。用户可使用settings.xml文件修改本地仓库。具体内容如下:

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  <!-- 本地仓库配置 -->
  <localRepository>具体本地仓库位置</localRepository>
  <!-- 省略,具体信息参考后续内容。 -->
</settings>

配置镜像仓库

如果仓库A可以提供仓库B存储的所有内容,那么就可以认为A是B的一个镜像。例如:我们可以使用阿里云提供的镜像替换官方镜像,提高下载依赖的速度。打开 maven 的配置文件( windows 机器一般在 maven 安装目录的 conf/settings.xml ),在<mirrors></mirrors>标签中添加mirror子节点:

xml 复制代码
<mirror>
  <!-- 指定镜像ID(可自己改名) -->
  <id>aliyunmaven</id>
  <!-- 匹配中央仓库(阿里云的仓库名称,不可以自己起名,必须这么写)-->
  <mirrorOf>*</mirrorOf>
  <!-- 指定镜像名称(可自己改名)  -->
  <name>阿里云公共仓库</name>
  <!-- 指定镜像路径(镜像地址) -->
  <url>https://maven.aliyun.com/repository/public</url>
</mirror>

仓库优先级

JDK配置

当你的idea中有多个jdk的时候,就需要指定你编译和运行的jdk。 在settings.xml中配置:

xml 复制代码
<profile>
    <!-- settings.xml中的id不能随便起的 -->
    <!-- 告诉maven我们用jdk1.8 -->
    <id>jdk-1.8</id>
    <!-- 开启JDK的使用 -->
    <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>

配置的前提是你的idea中要有1.8的jdk

五、Maven工程类型

1、POM工程 POM工程是逻辑工程。用在父级工程或聚合工程中。用来做 jar 包的版本控制。

2、JAR工程 将会打包成jar,用作jar包使用。即常见的本地工程 ---> Java Project。

3、WAR工程 将会打包成war,发布在服务器上的工程。

六、Maven项目结构

lua 复制代码
--MavenDemo 项目名
  --.idea 项目的配置,自动生成的,无需关注。
  --src
    -- main 实际开发内容
         --java 写包和java代码,此文件默认只编译.java文件
         --resource 所有配置文件。最终编译把配置文件放入到classpath中。
    -- test  测试时使用,自己写测试类或junit工具等
        --java 储存测试用的类
  pom.xml 整个maven项目所有配置内容。
  • src/main/java 储存java源代码
  • src/main/resources储存主要的资源文件。比如xml配置文件和properties文件
  • src/test/java储存测试用的类,比如JUNIT的测试一般就放在这个目录下面。因为测试类本身实际是不属于项目的,所以放在任何一个包下都显得很尴尬,所以maven专门创建了一个测试包用于存放测试的类
  • src/test/resources储存测试环境用的资源文件
  • src包含了项目所有的源代码和资源文件,以及其他项目相关的文件。
  • target编译后内容放置的文件夹
  • pom.xml是Maven的基础配置文件。配置项目和项目之间关系,包括配置依赖关系等等

注意:目录名字不可以随便改,因为maven进行编译或者jar包生成操作的时候,是根据这个目录结构来找的,你若轻易动,那么可能会找不到了。

相关推荐
陈大爷(有低保)15 分钟前
UDP Socket聊天室(Java)
java·网络协议·udp
kinlon.liu29 分钟前
零信任安全架构--持续验证
java·安全·安全架构·mfa·持续验证
王哲晓1 小时前
Linux通过yum安装Docker
java·linux·docker
java6666688881 小时前
如何在Java中实现高效的对象映射:Dozer与MapStruct的比较与优化
java·开发语言
Violet永存1 小时前
源码分析:LinkedList
java·开发语言
执键行天涯1 小时前
【经验帖】JAVA中同方法,两次调用Mybatis,一次更新,一次查询,同一事务,第一次修改对第二次的可见性如何
java·数据库·mybatis
Adolf_19931 小时前
Flask-JWT-Extended登录验证, 不用自定义
后端·python·flask
Jarlen1 小时前
将本地离线Jar包上传到Maven远程私库上,供项目编译使用
java·maven·jar
蓑 羽1 小时前
力扣438 找到字符串中所有字母异位词 Java版本
java·算法·leetcode
叫我:松哥1 小时前
基于Python flask的医院管理学院,医生能够增加/删除/修改/删除病人的数据信息,有可视化分析
javascript·后端·python·mysql·信息可视化·flask·bootstrap