Maven是一个用于java和android应用程序的项目构建工具。
与ant工具相比,Maven的一个特点是对软件项目进行依赖性管理。
当你在项目中使用maven时,你需要在pom.xml中定义依赖项。一旦配置了依赖项,它们就会从资源库下载到本地机器上。用Maven安装时,你必须使用依赖性插件来配置依赖性,它可以操作人工制品。
以下是在应用程序的pom.xml中为项目配置spring-core的示例代码段。
<project>
<dependency>
<groupid>org.springframework</groupid>
<artifactid>spring-core</artifactid>
<version>2.5.6</version>
</dependency>
</project>
当你编译时,你的项目第一次从spring资源库服务器下载spring-core jar。你也应该在pom.xml中用下面的代码配置资源库服务器。
<repositories>
<repository>
<id>spring-release</id>
<url>http://repository.springsource.com/maven/bundles/release</url>
</repository>
</repositories>
所以你可以配置多个资源库,寻找工件的资源库的顺序应该与pom.xml中的顺序一致。
什么是maven中的过渡性依赖?
例如,如果spring-core 的工件有log4j 作为依赖,会发生什么?
log4j 依赖项也应该下载到本地项目中吗?
是的,所有直接依赖都会自动解决。Transitive dependency的意思是,所有依赖都会为你在pom.xml中配置的项目transitively 解决。

在这个例子中,你的项目只配置了spring-core ,但你的项目有间接依赖项log4j 和JMX ,它们都依赖于spring-core 。
所以maven解决了所有这些依赖关系,即所有直接和间接依赖关系。
您的项目1.0.0 ,直接依赖spring-core-2.5.6 ,间接依赖log4j-1.2.12 和jmx-1.0.2 。
根据您的项目需要,您只想使用log4j-1.2.14 ,但根据上述spring-core 的依赖关系,您有log4j-1.2.12的依赖关系。所以你必须避免使用log4j-1.2.12 的依赖关系。
为此,我们必须在pom.xml的依赖标签中使用一个排除标签。
以下是代码片段
<dependency>
<groupid>org.springframework</groupid>
<artifactid>spring-core</artifactid>
<version>2.5.6</version>
<exclusions>
<exclusion>
<groupid>log4j</groupid>
<artifactid>log4j</artifactid>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupid>log4j </groupid>
<artifactid>log4j</artifactid>
<version>1.2.14</version>
它显示了项目依赖的maven依赖树
mvn dependency:tree
它有助于解决与某个依赖项的版本冲突
resolve-plugins会给出配置的依赖项的插件依赖树。
mvn dependency:resolve-plugins
另外,您也可以使用下面的maven命令来打印插件的依赖关系。
mvn -X
本主题是探索maven依赖性实例的一个非常基本的开始。希望你有足够的信息来开始学习。