使用Maven对项目进行依赖性管理实例

242 阅读2分钟

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 解决。

Understanding maven dependency  with example

在这个例子中,你的项目只配置了spring-core ,但你的项目有间接依赖项log4jJMX ,它们都依赖于spring-core

所以maven解决了所有这些依赖关系,即所有直接和间接依赖关系。

您的项目1.0.0 ,直接依赖spring-core-2.5.6 ,间接依赖log4j-1.2.12jmx-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依赖性实例的一个非常基本的开始。希望你有足够的信息来开始学习。