您是否应该在您的 pom 中包含那些已经是您的某些依赖项的依赖项?
Should you include those dependencies in your pom that are already the dependencies of some of your dependencies?
假设您需要两个依赖项:A 和 B。同时 A 已经是 B 的依赖项。那么您是否仍然 want/need 在您的 pom 中添加 A 和 B 作为依赖项?
我认为当 A 和 B 是外部库时可能需要这样做,因为 A 所需的版本可能与 B 所依赖的 A 版本不同。
但是当你的模块和 A 和 B 都是同一个项目中的模块时呢?即知道他们的版本都将同步。
如果您的模块使用 B 中的 API,最好将它显式添加到您的 pom,即使这不是绝对必要的。如果您升级 A,很可能它不再使用 B,然后您将在没有对模块代码进行任何更改的情况下构建失败。
关于版本,您应该在父 pom.xml 中管理带有 dependencyManagement 的版本。然后,您可以跳过子 pom 中托管依赖项的版本。 dependencyManagement
中的版本覆盖传递依赖项中的版本,确保您在任何地方都使用相同的版本。
如果所有模块都在同一个项目中,它们也应该共享同一个项目版本。通常,这将是快照版本,例如1-SNAPSHOT
每个模块都会使用类似的东西:
<project>
<artifactId>A</artifactId>
<version>1-SNAPSHOT</version>
并在其他模块中这样引用A和B:
<dependency>
<groupId>com.yourcompany</groupId>
<artifactId>A</artifactId>
<version>${project.version}</version>
</dependency>
要在构建发布之前设置非快照版本,例如,您可以使用 maven-dependency-plugin 的 versions:set 目标。
假设您需要两个依赖项:A 和 B。同时 A 已经是 B 的依赖项。那么您是否仍然 want/need 在您的 pom 中添加 A 和 B 作为依赖项?
我认为当 A 和 B 是外部库时可能需要这样做,因为 A 所需的版本可能与 B 所依赖的 A 版本不同。
但是当你的模块和 A 和 B 都是同一个项目中的模块时呢?即知道他们的版本都将同步。
如果您的模块使用 B 中的 API,最好将它显式添加到您的 pom,即使这不是绝对必要的。如果您升级 A,很可能它不再使用 B,然后您将在没有对模块代码进行任何更改的情况下构建失败。
关于版本,您应该在父 pom.xml 中管理带有 dependencyManagement 的版本。然后,您可以跳过子 pom 中托管依赖项的版本。 dependencyManagement
中的版本覆盖传递依赖项中的版本,确保您在任何地方都使用相同的版本。
如果所有模块都在同一个项目中,它们也应该共享同一个项目版本。通常,这将是快照版本,例如1-SNAPSHOT
每个模块都会使用类似的东西:
<project>
<artifactId>A</artifactId>
<version>1-SNAPSHOT</version>
并在其他模块中这样引用A和B:
<dependency>
<groupId>com.yourcompany</groupId>
<artifactId>A</artifactId>
<version>${project.version}</version>
</dependency>
要在构建发布之前设置非快照版本,例如,您可以使用 maven-dependency-plugin 的 versions:set 目标。