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