在pom.xml中声明maven“依赖”真的有必要吗?

时间:2011-08-01 10:29:16

标签: maven

我需要对Maven如何运作进行一些验证。

在pom.xml中明确指定项目依赖项(<dependencies>)有多重要?有人说只有当我们需要该jar的特定版本时才有必要,否则Maven将能够在你的本地/ Maven的远程存储库中找到jar。但是,我发现有时候如果没有指定/声明依赖项,我就无法构建或打包Maven项目。

那么..声明真的有必要吗?

4 个答案:

答案 0 :(得分:2)

如果您的代码只使用“普通”Java并且不依赖于任何其他库,则不需要声明任何依赖项(因为您不依赖于Java运行时以外的任何其他内容)。

在大多数情况下,您将使用一些第三方库 - 因此您必须在项目中将它们声明为依赖项,以便让maven构建一个有效的类路径,使您的构建工作(传递依赖项将自动解析 - 如前所述)。

关于jar的特定版本,请查看Sonatype提供的“Maven:The Complete Reference”一书的Project Dependencies部分。您可以通过多种方式声明所需的版本(包括版本范围)。

不要指望声明

<version>1.2.4</version>

将强制Maven使用该版本。这仅仅意味着“允许任何东西,但更喜欢1.2.4”。如果您需要强制maven使用特定版本而不必使用其他任何内容

<version>[1.2.4]</version>

答案 1 :(得分:1)

您无需声明JAR的传递依赖项。除此之外,必须宣布一切。以下是关于maven mananges依赖关系的一个很好的解读。 http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

答案 2 :(得分:1)

是的,需要依赖项。大多数插件使用它们来构造必要的类路径,或确定要在工件中包含的内容。 Maven是声明性的 - 你宣称你需要什么,而不是在本地找到它们的方式和地点。

答案 3 :(得分:0)

您始终需要指定依赖项。 Maven无法预测您需要哪些库。您在大多数情况下不需要指定的是其他Maven存储库。只有当您将库作为依赖项时才需要它,这些依赖项不包含在Maven Central中。

在项目中你也可以消除的是依赖项的版本号,如果你有父POM,那么指定版本。