乐趣区

关于java:MAVEN

一、Maven 的概述
1、什么是 Maven?

Maven 是 apache 下的一个纯 Java 开发的开源我的项目
Maven 是一个项目管理工具,能够简化我的项目配置,对立我的项目构造,使得开发者的工作变得更简略!应用 Maven 的次要起因,是 Maven 能够帮咱们下载和治理我的项目中所须要的依赖(jar 包)

二、Maven 的下载 / 装置 / 配置
1、下载、装置 Maven

官网下载地址:http://maven.apache.org/download.cgi
maven 是一个绿色软件,解压之后就能够应用。装置时举荐,装置的门路中不要蕴含中文和空格

2、配置本地仓库

2.1. 什么是本地仓库
    本地仓库就是本地硬盘上的一个目录,这个目录用于寄存 Maven 帮咱们下载的所有 jar 包和插件。如果不指定,本地仓库默认是在(windows 零碎):c:/users/{以后用户}/.m2/repository

2.2. 批改本地仓库的默认地位
    找到 {maven 的装置目录}/conf/settings.xml 文件,在 settings 文件的 55 行,增加如下内容:<localRepository>d:/javaDevelop/localRepo</localRepository>
    批改完后,当前通过 maven 下载的所有 jar 包和插件都会寄存在这个地位:d:/javaDevelop/localRepo

3、配置近程仓库

3.1. 什么是近程仓库
    如果没有配置近程仓库,默认连贯地方仓库,也就是 maven 将会从地方仓库下载 jar, 再保留到本地仓库中。但因为地方仓库面向的是寰球用户,所以下载 jar 包速度较慢!近程仓库(镜像仓库、私服): 个别是由公司 (或集体) 负责搭建并保护,如果配置了近程仓库,maven 就会从近程仓库下载所须要的 jar 包,并保留到本地仓库中。3.2. 如何配置近程仓库
    (1)如果是有网络:能够不配置,默认连贯地方仓库,也能够配置连贯阿里云的仓库,或者连贯你们公司本人的近程仓库。留神:如果连贯阿里云仓库,不能够应用手机热点网络!配置办法:找到{maven 的装置目录}/conf/settings.xml 文件,在 settings 文件的 <mirrors> 标签外部,通过增加 <mirror> 标签,能够配置近程仓库。阿里云的近程仓库配置:<mirror>
        <id>nexus-aliyun</id>
        <name>Nexus aliyun</name>
        <mirrorOf>central</mirrorOf>
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    </mirror>

4、配置 JDK 版本

因为在 maven 和 eclipse 整合后,通过 eclipse 创立的 maven 我的项目,其中的 JDK 版本默认是 JDK1.5(太旧)能够在{maven 的装置目录}/conf/settings.xml 文件中配置 JDK 的版本,配置后,当前再创立 maven 我的项目,我的项目中的 JDK 版本就是咱们指定的版本。而不是 JDK1.5。配置办法是:在{maven 的装置目录}/conf/settings.xml 文件的 <profiles> 标签外部,增加一个 <profile> 标签。如下:<profile>
    <id>development</id>
    <activation>
        <jdk>1.8</jdk>
        <activeByDefault>true</activeByDefault>
    </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>

5、整合 Maven 和 Eclipse

如果曾经将 Maven 和 Eclipse 进行了整合,再批改 settings.xml 文件,如果想让批改的配置立刻失效,能够重启 Eclipse。

三、Maven 的我的项目构建
0、通过 Maven 构建 Java 我的项目分为两种形式:

形式一:通过 Maven 创立简略工程 / 我的项目(new simple project)
    (1)通过 Maven 创立简略的 Java 工程
    (2)通过 Maven 创立简略的 Web 工程
形式二:通过 Maven 创立模板工程 / 我的项目
    (1)通过模板创立 Java 工程
    (2)通过模板创立 Web 工程

1、通过 Maven 创立一个 Java 我的项目:CGB-MAVEN-JAVA01

2、通过 Maven 创立一个 Web 我的项目:CGB-MAVEN-WEB01

留神:通过 maven 创立的 Web 我的项目默认短少 WEB-INF 目录, 也短少 web.xml 文件, 解决办法是:
在 [Package Explorer] 视图窗口中,在 Web 我的项目上 --> 右键 --> 抉择:JavaEE Tools--> 抉择:Generate Deployment...,webapp 目录下就会生成 WEB-INF 目录和 web.xml 文件

3、Maven 我的项目的目录构造

CGB-MAVEN-WEB01(maven 我的项目的名字)
    |-- src/main/java(源码目录) -- 用于寄存主程序 / 我的项目的 java 源文件
    |-- src/main/resources(源码目录) -- 用于寄存主程序所须要的配置文件(.xml/.propertes/.yml 等)
    |-- src/test/java(源码目录) -- 用于寄存测试的 java 源文件
    |-- src/test/resources(源码目录) -- 用于寄存测试的配置文件
    |-- src/main/webapp -- Web 利用的根目录, 相当于 WebContent 目录
            未来能够寄存 Web 资源文件(html/css/js/jsp/ 图片等)
    |-- src/main/webapp/WEB-INF/web.xml -- Web 利用的外围配置文件
    |-- target/classes/ -- 源码目录中的资源文件通过编译后, 会输入到 classes 目录下
    |-- pom.xml -- maven 我的项目的配置文件, 如果须要引入 jar 包、插件, 能够在这个文件中进行引入

4、如何导入已有的 Maven 我的项目

1) 导入数据库(yonghedb)、表、表记录
2) 导入 yonghe 我的项目
留神: 在导入我的项目后, 我的项目上有叉号 (x) 或者有叹号(!), 都是因为 maven 没有将所有的环境 / 依赖下载下来。能够通过如下两个步骤去解决:1)关上 yonghe 我的项目,找到其中的 pom.xml 文件, 在文件中敲一个空白行并保留, 让 maven 从新扫描 pom 文件, 并依据其中的配置下载所须要的依赖;2)在报错的 maven 我的项目上右键 --> Maven--> Update Project..., 在弹出的窗口中勾选下方的
    []Force Update...
    即勾选强制更新,如果还没有解决,再看第 3 步!

四、maven 的依赖治理
1、如何在 Maven 我的项目中引入 jar 包(依赖)

不须要将 jar 包复制到以后我的项目中,而是在 pom.xml 文件中增加这个 jar 包对应的坐标,比方,要增加 mysql 驱动包,只须要在 pom 文件的根标签(project)外部,增加一个 <dependencies> 标签,在 <dependencies> 标签外部增加一个 mysql 驱动包的坐标即可,如下所示:<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.32</version>
</dependency>

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

2、引入到 Maven 我的项目中的 jar 包,寄存在哪个地位?

引入到 Maven 我的项目中的 jar 包,寄存在本地仓库的指定地位下,这个地位就是【本地仓库地位 + 以后依赖的坐标】(后面说过,本地仓库就是本地硬盘上的某一个目录,就是用来寄存 maven 帮咱们下载的所有 jar 包和插件)

3、本地仓库中的 jar 包是从哪儿来的?

如果没有配置近程仓库,本地仓库中的 jar 包是 maven 帮咱们从地方仓库下载下来的。如果配置了阿里云的近程仓库,本地仓库中的 jar 包是 maven 帮咱们从阿里云仓库下载下来的
1)本地仓库:其实就是本地硬盘上的某一个目录,用于寄存 maven 帮咱们下载的所有 jar 包和插件
    当咱们在我的项目中引入了依赖, 就会到本地仓库中依据坐标寻找这个依赖(jar 包)
    如果本地仓库中有, 则间接引入到我的项目中应用;
    如果本地仓库中没有, 则连贯近程仓库(如果配置了), 或者连贯地方仓库。2)近程仓库:也叫作镜像仓库或者私服,由公司或集体负责搭建,如果在 maven 中配置了近程仓库,当本地仓库中没有某一个 jar 包时,就会连贯近程仓库进行下载。近程仓库若没有,则连贯地方仓库去下载。3)地方仓库:由 maven 团队负责搭建并保护,其中包含了全世界简直所有的 jar 包,面向的用户是寰球用户,因而在连贯地方仓库时,速度会比较慢。

4、如何在 pom 文件中增加依赖?
4.1. 增加依赖的形式一:

如果增加的依赖包在本地仓库中有(比方之前在别的我的项目中引入过这个依赖包)
增加办法: 关上 pom 文件, 在 pom 文件中右键 --> Maven --> Add dependency, 在弹出的窗口中输出要增加的依赖包。如果本地仓库中没有这个 jar 包,必然会搜寻不到!如果本地仓库中有这个 jar 包也搜寻不到,解决办法是:关上 Maven Repositories 窗口, 找到 Local Repository, 在下面右键 ReBuild Index(即重建索引), 重建索引后再去搜寻。

4.1. 增加依赖的形式二:

如果增加的依赖包在本地仓库中没有,能够在互联网上进行搜寻依赖的坐标,并把坐标复制到 pom 文件中
http://mvnrepository.com
http://maven.ityuan.com

五、maven 的常见问题
1、Maven 的本地库反对复制

如果因为网络问题导致无奈通过 maven 下载所须要的依赖,能够将别的电脑上、曾经下载好的本地库,复制到咱们的本地库中。

2、如果通过 Maven 创立的工程目录构造不残缺,或者前期在引入 Jar 包时,jar 引入失败,能够参考如下办法进行解决:

1)确保以后网络环境是否能连贯上所配置的近程仓库,接着进行第 2 步。(若不在达内教室,是无奈连贯达内的近程仓库;又或者应用手机热点网络将无奈连贯阿里云的近程仓库等)2)在我的项目的 pom 文件中敲一个空白行,再保留文件。(目标是让 maven 检测到 pom 文件产生了变动,再依据 pom 文件中的配置,到本地仓库中寻找对应的 jar 包,如果没有相应的 jar 包,maven 会从新下载)
3)接着在我的项目上,右键 ---> Maven ---> Update Project...,在弹出的窗口中勾选下方的 "[]Force Update...",即强制更新我的项目,此时 maven 也会查看 pom 文件,下载没有引入的相干依赖。4)如果以上操作还是不行,到本地仓库的目录下,将本地仓库中所有的目录都删除,删除时,因为 eclipse 正在应用本地仓库中的资源文件,所以会阻止删除,此时将 eclipse 敞开,再将本地仓库中的所有目录删除,重启 eclipse。5)启动 eclipse 后, 再将下面的第 (2) 步和第 (3) 步再做一遍!
退出移动版