Maven:知识的积累。
Maven是一种基于POM(Project Object Model,即:项目对象模型)的项目构建工具。

1.下载Maven

http://maven.apache.org/download.cgi

2.安装

  • 安装JDK并设置`%JAVA_HOME%
  • 检查JDK安装
echo %JAVA_HOME%
C:\Program Files\Java\jdk1.8.0_131
  • 安装Maven
  • 将maven目录添加到%M2_HOME%%MAVEN_HOME%环境变量中。
  • 将maven的bin目录添加到%path%路径中。
  • 检查Maven安装
mvn -v
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 201
Maven home: E:\apache-maven-3.3.9\bin\..
Java version: 1.8.0_131, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_131\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 7", version: "6.1", arch: "x86", family: "dos"

3.Maven目录结构

使用Maven管理项目的话,那么项目的结构目录务必要按照Maven约定的目录结构来创建项目,我们在官方文档中可以看到Maven提供的目录结构图:

myproject
|--pom.xml  #项目对象模型(项目依赖)
\--src      #源文件路径
    \---main
    |     \---java  #java路径(java)
    |     | \---com
    |     |      \---mycompany
    |     |         \---myproject
    |     |                \---Demo.java
    |     \---resources #资源路径(jar/xml/properties...)
    |     | \---env.properties
    |     \---webapps   #web路径(js/html...)
    |     | \---env.properties
    \---test
    |     \---java
    |     | \---com #junit4java路径
    |     |      \---mycompany
    |     |         \---myproject
    |     |                \---DemoTest.java
    |     \---resources #junit4资源路径
    |     | \---test.properties

3.1.超级pom.xml(父类pom)

在一个项目内执行:mvn help:effective-pom,可以查看父类pom的依赖情况。

4.Maven代理配置

如果你的公司正在建立一个防火墙,并使用HTTP代理服务器来阻止用户直接连接到互联网。如果您使用代理,Maven将无法下载任何依赖。
为了使它工作,你必须声明在 Maven 的配置文件中设置代理服务器:settings.xml.
settings.xml路径:{M2_HOME}/conf/settings.xml

<proxy>
      <id>optional</id>
      <active>true</active>
      <protocol>http</protocol>
      <username>proxyuser</username>
      <password>proxypass</password>
      <host>proxy.host.net</host>
      <port>80</port>
      <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
    </proxy>

5.maven本地资源库

Maven的本地资源库是用来存储所有项目的依赖关系(插件jar和其他文件,这些文件被Maven下载)到本地文件夹。很简单,当你建立一个Maven项目,所有相关文件将被存储在你的Maven本地仓库。
默认情况下,Maven的本地资源库默认为 .m2 目录文件夹:
- Unix/Mac OS X – ~/.m2
- Windows – C:\Documents and Settings{your-username}.m2

5.1.修改本地资源库目录

settings.xml路径:{M2_HOME}/conf/settings.xml

<localRepository>g:/repo</localRepository>

还可以在运行时指定本地仓库位置:
mvn clean install -Dmaven.repo.local=/home/juven/myrepo/

6.maven中央资源库

当你建立一个 Maven 的项目,Maven 会检查你的 pom.xml 文件,以确定哪些依赖下载。首先,Maven 将从本地资源库获得 Maven 的本地资源库依赖资源,如果没有找到,然后把它会从默认的 Maven 中央存储库 – http://repo1.maven.org/maven2/ 查找下载。
Maven中心储存库网站已经改版本,目录浏览可能不再使用。这将直接被重定向到 http://search.maven.org/
目录浏览功能被禁用,但是,当你建立 Maven 的项目,它仍然会从 “http://repo1.maven.org/maven/” 得到依赖, 您可以从 Maven 验证输出。

7.Maven远端仓库

maven的中央仓库,即默认的远端仓库

7.0snapshot和release版本

Snapshot版本代表不稳定、尚处于开发中的版本,快照版本。
Release版本则代表稳定的版本,发行版本。

7.1增加远端仓库(修改超级pom,也可以直接修改项目的pom)

配置文件(超级pom):%M2_HOME%/lib/maven-model-builder-{version}/org/apache/maven/model/pom-4.0.0.xml
中央仓库的id为central,远程url地址为http://repo.maven.apache.org/maven2,它关闭了snapshot版本构件下载的支持。

<repository>
  <id>maven-net-cn</id>
  <name>Maven China Mirror</name>
  <url>http://maven.net.cn/content/groups/public/</url>
  <releases>
    <enabled>true</enabled>
  </releases>
  <snapshots>
    <enabled>false</enabled>
  </snapshots>
</repository>

7.2增加远端仓库(修改settings.xml)

配置文件(settings.xml):%M2_HOME%\conf\settings.xml
利用profile配置一系列配置,然后制定其激活条件。

<settings>
  ...
  <profiles>
    <profile>
      <id>dev</id>
      <!-- repositories and pluginRepositories here-->
    </profile>
  </profiles>
  <activeProfiles>
    <activeProfile>dev</activeProfile>
  </activeProfiles>
  ...
</settings>

使用profile为settings.xml添加仓库提供了一种用户全局范围的仓库配置。

8.maven镜像

如果你的地理位置附近有一个速度更快的central镜像,或者你想覆盖central仓库配置,或者你想为所有POM使用唯一的一个远程仓库(这个远程仓库代理的所有必要的其它仓库),你可以使用settings.xml中的mirror配置。
以下的mirror配置用maven.net.cn覆盖了Maven自带的central:

<settings>
...
  <mirrors>
    <mirror>
      <id>maven-net-cn</id>
      <name>Maven China Mirror</name>
      <url>http://maven.net.cn/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>
...
</settings>

以下的mirror配置用my-org-repo覆盖了所有的仓库,即唯一远程仓库:

<settings>
...
  <mirrors>
    <mirror>
      <id>my-org-repo</id>
      <name>Repository in My Orgnization</name>
      <url>http://192.168.1.100/maven2</url>
      <mirrorOf>*</mirrorOf>
    </mirror>
  </mirrors>
...
</settings>

9.Maven依赖机制

在 Maven 依赖机制的帮助下自动下载所有必需的依赖库,并保持版本升级。

<dependencies>
    <dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.14</version>
    </dependency>
</dependencies>

如果version标签被忽略,它会自动升级库时当有新的版本时。
当建立一个Maven的项目,pom.xml文件将被解析,如果看到 log4j 的 Maven 坐标,然后 Maven 按此顺序搜索 log4j 库:
- 在 Maven 的本地仓库搜索 log4j
- 在 Maven 中央存储库搜索 log4j
- 在 Maven 远程仓库搜索 log4j(如果在 pom.xml 中定义)

10.Maven添加自定义jar包到本地库

mvn install:install-file -Dfile=c:\kaptcha-{version}.jar -DgroupId=com.google.code -DartifactId=kaptcha -Dversion={version} -Dpackaging=jar