我是maven的新手,我有一个与多个库直接相关的项目,但是如果我在pom.xml中只声明了一个依赖项,那么项目就可以完美地编译和运行。因为这个库有其他依赖项,它们会自动导入并包含我的直接依赖项。
是否建议在pom.xml中添加所有依赖项,尽管有可传递的依赖项?
我应该使用哪种版本的依赖项?最高版本?
答案 0 :(得分:1)
不,当存在正确解析的传递依赖关系时,您不需要在pom.xml中明确指定它们。因此你的pom保持小而整洁 您应该在新项目中使用最高稳定版本的依赖项。
但是,在某些情况下,您需要使用不同版本(在大多数情况下更高)的传递依赖项。在这种情况下,您可以在<dependencyManagement>
标记中使用较高版本指定传递依赖项。例如,如果我们有:
<dependencies>
<dependency> <!-- has transitive dependency of com.artifact2 v.1.0 -->
<groupId>com.group1</groupId>
<artifactId>com.artifact1</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
如果我们要明确指出我们需要新版本的com.artifact2
是2.0,那么我们将这些行添加到pom中:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.group1</groupId>
<artifactId>com.artifact2</artifactId>
<version>2.0</version>
</dependency>
</dependencies>
</dependencyManagement>
答案 1 :(得分:0)
几乎总是更好地使用您所需的那些依赖项。捆绑的依赖项通常包含更多您需要的内容。但是,您可以通过在pom.xml中添加排除项,使依赖项仅包含您实际需要的库。通常,超过一个第3方库使用相同的公共库(例如,在许多依赖项中都可以找到日志记录依赖项)。然后,这些库将导致冲突,这在某些Web容器中可能会出现问题。如果您正在使用eclipse,请在Dependency Hierarchy中打开您的pom,看看它是如何从那里开始的......
版本取决于几个因素。首先要注意的是选择一个RELEASE版本(除非明确要求选择一个最新版本,包含你已经等待3个月的最新功能)。其次是弄清楚你使用哪些最新版本的不同库和框架可以成功地协同工作。较新版本通常是首选,因为它们是最后开发的,这意味着:更多的开发人员支持,更有可能与其他最先进的框架一起工作。