我需要对Maven如何运作进行一些验证。
在pom.xml中明确指定项目依赖项(<dependencies>
)有多重要?有人说只有当我们需要该jar的特定版本时才有必要,否则Maven将能够在你的本地/ Maven的远程存储库中找到jar。但是,我发现有时候如果没有指定/声明依赖项,我就无法构建或打包Maven项目。
那么..声明真的有必要吗?
答案 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,那么指定版本。