Maven

Maven安装

Maven下载地址

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

Maven配置环境变量

添加M2_HOMEMAVEN_HOME到PATH中

验证安装

1
mvn -version

Maven本地资源库

在文件%MAVEM_HOME%/conf/setting.xml中

更新localRepository

1
<localRepository>D:\Program Files\apache-maven-3.6.2\repository</localRepository>

Maven中央储存库

阿里云中央储存库

1
2
3
4
5
6
<mirror>
<id>aliyunmaven</id>
<mirrorOf>central</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>

Maven远程储存库

在pom.xml中设置

Java.net资源库

1
2
3
4
5
6
 <repositories>
<repository>
<id>java.net</id>
<url>https://maven.java.net/content/repositories/public/</url>
</repository>
</repositories>

JBoss Maven资源库

1
2
3
4
5
6
7
8
<project ...>
<repositories>
<repository>
<id>JBoss repository</id>
<url>http://repository.jboss.org/nexus/content/groups/public/</url>
</repository>
</repositories>
</project>

Maven依赖机制

只需要在pom.xml总声明做表,则maven会自动下载jar包,并保存在Maven本地仓库中

例子:log4j

1
2
3
4
5
6
7
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
</dependencies>

Maven搜索顺序

  1. 在Maven本地仓库中搜索,没找到往下,否则退出
  2. 在Maven中央仓库搜索,没找到往下,否则退出
  3. 在Maven远程仓库搜索,没找到提示错误信息,否则退出

Maven手动添加jar包到本地资源库

因为有一些jar包是不支持maven的,所以需要手动添加

比如:kaptcha,它是一个流行的第三方Java库,它被用来生成 “验证码” 的图片,以阻止垃圾邮件,但它不在 Maven 的中央仓库中。

下载 “kaptcha”,将其解压缩并将 kaptcha-version.jar 复制到其他地方,比如:C盘。发出下面的命令:

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

其中

  • -Dfile指文件路径

  • DartifactId指文件名字

  • Dversion文件版本

  • Dpackaging文件版本

    安装完毕之后就可以像正常jar包一样在pom.xml中声明

Maven POM

POM例子

1
2
3
4
5
6
7
8
9
<project xmlns="http://maven.apache.org/POM/4.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>con.wang</groupId>
<artifactId>project</artifactId>
<version>1.0</version>
<project>

每个项目只有一个POM文件

  • 所有的POM文件的项目元素有三个必填字段:groupIdartifactId,version

  • pom.xml的根元素是:project

节点 描述
groupId 这是项目组的编号,这在组织或项目中通常是独一无二的。 例如,一家银行集团com.company.bank拥有所有银行相关项目。
artifactId 这是项目的ID。这通常是项目的名称。 例如,consumer-banking。 除了groupId之外,artifactId还定义了artifact在存储库中的位置。
version 这是项目的版本。与groupId一起使用,artifact在存储库中用于将版本彼此分离。 例如:com.company.bank:consumer-banking:1.0com.company.bank:consumer-banking:1.1

Maven外部依赖

在项目中指定自己所用的库,它可以包含 jar 文件,但是可能无法在任何 Maven 存储库找到,那么需要从部下载。

1
2
3
4
5
6
7
<dependency>         
<groupId>ldapjdk</groupId>
<artifactId>ldapjdk</artifactId>
<scope>system</scope>
<version>1.0</version>
<systemPath>${basedir}\src\lib\ldapjdk.jar</systemPath>
</dependency>

外部依赖(JAR库的位置)可以在 pom.xml 中配置为与其他依赖的方式相同;

  • 指定 groupId 同样作为库的名称;

  • 指定 artifactId 同样作为库的名称

  • 指定范围的系统;

  • 指定相系统项目的位置;