Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven 是否建议在pom.xml中添加所有依赖项?_Maven - Fatal编程技术网

Maven 是否建议在pom.xml中添加所有依赖项?

Maven 是否建议在pom.xml中添加所有依赖项?,maven,Maven,我是maven的新手,我有一个直接依赖于多个库的项目,但是如果我在pom.xml中只声明一个依赖项,那么这个项目就可以完美地编译和运行。这是因为此库具有其他自动导入的依赖项,这些依赖项包含我的直接依赖项 是否建议在pom.xml中添加所有依赖项,而不考虑可传递依赖项 我应该使用什么版本的依赖项?可能的最高版本?否,当存在正确解析的可传递依赖项时,不需要在pom.xml中显式指定它们。因此,您的pom保持小而整洁。 您应该在新项目中使用最高稳定版本的依赖项 但是,在某些情况下,您需要使用不同版本(

我是maven的新手,我有一个直接依赖于多个库的项目,但是如果我在pom.xml中只声明一个依赖项,那么这个项目就可以完美地编译和运行。这是因为此库具有其他自动导入的依赖项,这些依赖项包含我的直接依赖项

是否建议在pom.xml中添加所有依赖项,而不考虑可传递依赖项


我应该使用什么版本的依赖项?可能的最高版本?

否,当存在正确解析的可传递依赖项时,不需要在pom.xml中显式指定它们。因此,您的pom保持小而整洁。
您应该在新项目中使用最高稳定版本的依赖项

但是,在某些情况下,您需要使用不同版本(在大多数情况下更高版本)的可传递依赖项。在这种情况下,您可以在
标记中指定具有更高版本的可传递依赖项。例如,如果我们有:

<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>

使用您所需要的依赖项几乎总是更好的。捆绑依赖项通常包含比您需要的更多的内容。但是,通过在pom.xml中添加排除项,可以使依赖项只包含实际需要的库。通常不止一个第三方库使用相同的公共库(例如,在许多依赖项中都可以找到日志依赖项)。这些库将导致冲突,在某些web容器中可能会出现问题。如果您正在使用eclipse,请在Dependency Hierarchy中打开pom,看看它是如何运行的


版本取决于几个因素。第一件重要的事情总是选择一个发布版本(例如,除非明确要求用户选择一些最新的beta版,其中包含您已经等待了3个月的最新功能)。第二是找出您使用的不同库和框架的最新版本可以成功地协同工作。较新的版本通常是首选的,因为它们是最后开发的,这意味着:更多的开发人员支持,更有可能与其他最先进的框架一起工作。

您不需要这样做:但是,明确定义项目中直接引用的那些依赖关系被认为是最佳做法,即使这些依赖关系是通过传递方式解决的。我不知道这是否应该被认定为最佳实践。有某些观点和偏好。存在具有数百个可传递依赖项的工件。你有什么建议?要将它们全部添加到pom文件中吗?我不是这么说的。如果您在代码中直接使用一个类,那么将该依赖项包含在pom中被认为是最佳实践,而不管它是否以传递方式拉入。
<dependencyManagement>
  <dependencies>
    <dependency> 
      <groupId>com.group1</groupId>
      <artifactId>com.artifact2</artifactId>
      <version>2.0</version>
    </dependency>
  </dependencies>
</dependencyManagement>