Maven是Apache提供的一款自动化构建工具,用于自动化构建和依赖管理。
在之前我们编写代码时,我们在使用一些Java已有的工具类时,都是由JDK提供的,通过import引入暴路径,但是我们在连接数据库时就需要引入第三方jar包。如果还需要mysql驱动,就需要把这些驱动jar包放在classpath中。
其次,我们还需要确定项目的目录结构,例如src存放源码,resources存放配置文件,bin存放.class文件等等。还需要配置环境,如jdk版本。
最后,如果不适用IDE编译,我们还得使用命令行工具,才能让项目在一个独立的服务器上编译、测试、部署。
这些工作难度不大且较繁琐,我们每一个项目都这样搞的话,很可能会一团糟。而Maven就是专门为Java项目打造的管理和构建工具,它的功能:
下载地址http://mirror.bit.edu.cn/apache/maven/maven-3/3.5.4/binaries/
解压后会得到如下目录
与之前配置jdk相似,在环境变量中新建MAVEN_HOME
随后,在path环境变量下添加 %MAVEN_HOME\bin
如果按照上文配置成功之后,可以查看maven的版本,如果提示不是内部或外部命令,最好再检查一下环境变量的配置
我们要修改的setting文件在我们刚下载好的maven的conf目录下。
我们使用maven会将相关依赖从远程仓库下载到本地仓库。这里可以自己新建一个目录来存放。
Maven默认的远程仓库在国外,下载的速度会非常慢,有时甚至会被拦截,解决办法有两种。
一种便是配置VPN。
其次便是使用国内的一些仓库,配置如下:
<mirrors>
<!-- mirror
| Specifies a repository mirror site to use instead of a given repository. The repository that
| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
|
<mirror>
<id>mirrorId</id>
<mirrorOf>repositoryId</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://my.repository.com/repo/path</url>
</mirror>
-->
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>ui</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://uk.maven.org/maven2/</url>
</mirror>
<mirror>
<id>jboss-public-repository-group</id>
<mirrorOf>central</mirrorOf>
<name>JBoss Public Repository Group</name>
<url>http://repository.jboss.org/nexus/content/groups/public</url>
</mirror>
<mirror>
<id>repo2</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo2.maven.org/maven2/</url>
</mirror>
<mirror>
<id>OSChina</id>
<name>OSChina Central</name>
<url>http://maven.oschina.net/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>nexus-osc-thirdparty</id>
<mirrorOf>thirdparty</mirrorOf>
<name>Nexus osc thirdparty</name>
<url>http://maven.oschina.net/content/repositories/thirdparty/</url>
</mirror>
</mirrors>
将上文的所有 < mirror >…< /mirror >的内容拷贝到配置文件的 < mirrors >…< /mirrors >的标签中。修改完后保存。
点击Defaul Setting之后在左侧选择Maven点击,随后对右边圈出的三处进行配置
在配置setting file时要先够选Override,随后点击右侧按钮选择setting文件。第三个也需要够选Override。修改完后要记得点击ok应用。
自动更新配置:
左侧点击Maven下面的Importing,右侧根据下图进行勾选。
以上操作完成后,一直点击next,直至finsh即可。
之后会弹出对话框,选择新窗口或覆盖当前窗口。
创建好之后会,项目会先下载自己所需的依赖,这个过程需保持网络畅通。
完成之后,会如上图,如果没有配置使用国内仓库,这个过程可能会比较漫长。
一个使用Maven管理的普通的项目,目录结构大致如下
maven是项目名
项目描述文件pom.xml
Java源码目录src/main/java
资源文件目录src/main/resources
测试源码目录src/test/java
测试资源目录src/test/resources
最后,我们把所有编译打包的文件都放在target目录里,这就是一个标准的Maven项目的目录结构。这些都是约定好的,不要随意修改结构。
我们再来看一下项目描述文件pom.xml:
大致长这样
<project ...>
<modelVersion>4.0.0</modelVersion>
<groupId>com.tulun</groupId>
<artifactId>maventest</artifactId>
<version>1.0-SNAPSHOT</version>
<name>maventest</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.39</version>
</dependency>
</dependencies>
</project>
其中,groupId类似于Java的包名,通常是公司或组织名称,artifactId类似于Java的类名,通常是项目名称,再加上version,一个Maven工程就是由groupId,artifactId和version作为唯一标识。我们在引用其他第三方库的时候,也是通过这3个变量确定。例如,依赖mysql:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.39</version>
</dependency>
使用< dependency >声明一个依赖后,Maven就会自动下载这个依赖包并把它放到classpath中。