Maven 基本使用与远端仓库配置
前言
在前章介绍如何[安装Maven](Maven 安装和配置)后,本章继续介绍如何高效的使用Maven
帮助我们进行开发.
于Maven真正使用之前,我们通常需要安装一些Maven
的插件,帮助我们快速使用和开发.Eclipse Maven开发工具的导入请看Eclipse Maven插件&Tomcat插件. (PS: IDEA的安装教程自行百度)
PS: 本文所用的Maven例子可以在我的Github仓库内找到
https://github.com/SeanYanxml/maven-train
基础知识
在学会安装插件,创建Maven项目后.我们就可以使用Maven进行快速开发了.一个极速版本的Maven项目主要包括如下几块.
localhost:arsenal-jvm Sean$ tree
├── pom.xml
├── src
│ ├── main
│ │ ├── java
│ │ └── resources
│ └── test
│ ├── java
│ └── resources
这么看可能有点抽象.简单解释一下,一个简单的Maven项目通常包括
src/main/java
src/main/resource
src/test/main
src/test/resource
- pom.xml
这几项src/xx/xx
目录下一般放置开发的源码以及与源码相关的资源.pom.xml
文件则为maven
的配置文件.
一个简单的pom.xml
文件如下所示:
<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">
<groupId>com.yanxml</groupId>
<artifactId>maven-train-quickstart</artifactId>
<version>0.0.1-SNAPSHOT</version>
</project>
其中包括多个标签进行表示需要的Jar包.其中groupId
为组织名,比如:org.springframework
就是spring项目的组织名; artifactId
为项目名称; version
为项目的版本号.
除了如上的基础标签外,Maven的pom.xml文件内还提供了一系列的其他标签:
-
<parent>
子项目标签 -
<dependencies>
依赖外标签 内包括多个依赖子标签 -
<dependency>
依赖内标签 依赖Jar包标签 -
<packaging>
打包类型标签(Jar / War / Pom) -
<properties>
标签 -
<build>--<plugins>--<plugin>
使用的Maven插件 -
<dependencyManagement> - <dependencies> - <dependency>
用于管制Jar包的版本(即一个项目的不同子项目的版本一致性)
引用Jar包
根据上文介绍各种标签,我们知道了导入Jar包的标签为<dependencies>-<dependency>
.简单的来说,如果我们需要导入log4j
的jar包,我们应该如何使用呢.
- 首先,在网站上查询
log4j
的相关信息(组织名-项目名-版本号)
查询地址为mvnrepository
我们将下方的三项信息拷贝进项目的pom.xml
文件,即可完成引用.
<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>
<parent>
<groupId>com.yanxml</groupId>
<artifactId>maven-train</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>maven-train-quickstart</artifactId>
<properties>
<lang.version>1.2</lang.version>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.7</version>
</dependency>
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
</project>
完成上述引用后,我们就可以在项目内对Jar包
内的类进行引用了.例如import org.apache.log4j.Logger;
详细的例子如下:
package com.yanxml.maven.quickstart;
import org.apache.log4j.Logger;
import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.xml.DOMConfigurator;
public class HelloworldLog4jDemo {
private static Logger logger = Logger.getLogger(HelloworldLog4jDemo.class);
/**
* @param args
*/
public static void main(String[] args) {
// 记录debug级别的信息
logger.debug("This is debug message.");
// 记录info级别的信息
logger.info("This is info message.");
// 记录error级别的信息
logger.error("This is error message.");
}
}
仓库
上文我们知道配置<dependence>
标签内的配置,我们就可以使用远端包的内容了.这是怎么做到的呢?
答案非常简单.当你进行一些列的配置后,Maven工具会将包下载到本地配置的repository
目录内,随后引入classpath
进行加载.本地仓库的内的log4j
包如下所示:
与项目内如下所示:
当然,官方的库内,有可能没有你需要的Jar
包. 于是,我们可以配置其他的第三方包或者mvn install
直接导入本地仓库即可.
### pom.xml内其他仓库源设置(aliyun)
<mirror>
<id>nexus-aliyun</id>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</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>
Reference
[1] 推荐几个好用的maven仓库镜像站
[2] mvnrepository.com/
[3] Maven中的dependencyManagement 意义