# Maven 依赖机制

---

在 Maven 依赖机制的帮助下自动下载所有必需的依赖库，并保持版本升级。让我们看一个案例研究，以了解它是如何工作的。假设你想使用 Log4j 作为项目的日志。这里你要做什么？ 

## 传统方式

* 访问 http://logging.apache.org/log4j/
* 下载 Log4j 的 jar 库
* 复制 jar 到项目类路径
* 手动将其包含到项目的依赖
* 所有的管理需要一切由自己做

如果有 Log4j 版本升级，则需要重复上述步骤一次。 

## Maven 的方式

* 你需要知道 log4j 的 Maven 坐标，例如：

```
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
```

* 它会自动下载 log4j 的 1.2.17 版本库
* 声明 Maven 的坐标转换成 pom.xml 文件

```
<dependencies>
    <dependency>
	<groupId>log4j</groupId>
	<artifactId>log4j</artifactId>
	<version>1.2.17</version>
    </dependency>
</dependencies>
```

* 当 Maven 编译或构建，log4j 的 jar 会自动下载，并把它放到 Maven 本地存储库
* 所有由 Maven 管理

## 解释说明

看看有什么不同？那么到底在Maven发生了什么？当建立一个Maven的项目，pom.xml文件将被解析，如果看到 log4j 的 Maven 坐标，然后 Maven 按此顺序搜索 log4j 库：

* 在 Maven 的本地仓库搜索 log4j 
* 在 Maven 中央存储库搜索 log4j
* 在 Maven 远程仓库搜索 log4j(如果在 pom.xml 中定义)

Maven 依赖库管理是一个非常好的工具，为您节省了大量的工作

## log4j.properties

```
log4j.rootLogger=INFO, console, file

log4j.appender.console=org.apache.log4j. ConsoleAppender
log4j.appender.console.layout=org.apache.log4j. PatternLayout
log4j.appender.console.layout. ConversionPattern=%d %p [%c] - %m%n

log4j.appender.file=org.apache.log4j. DailyRollingFileAppender
log4j.appender.file. File=logs/log.log
log4j.appender.file.layout=org.apache.log4j. PatternLayout
log4j.appender. A3.MaxFileSize=1024KB
log4j.appender. A3.MaxBackupIndex=10
log4j.appender.file.layout. ConversionPattern=%d %p [%c] - %m%n
```