gpt4 book ai didi

java - 在 部分声明依赖,即使依赖没有在任何地方使用?

转载 作者:IT老高 更新时间:2023-10-28 20:55:51 24 4
gpt4 key购买 nike

我们使用的是 maven 2.1.0。我有多个完全独立的模块,但仍然有许多共同的依赖关系。像 log4J,但有些模块不需要它。我想知道在 <dependencyManagement> 的一个父文件中声明所有常见依赖项是否是个好主意。部分还是有更好的方法来处理这个问题?

关于 <dependencyManagement> 的后续问题.如果我在 <dependencyManagement> 中声明 Log4J父项目和子项目的部分不使用它,它是否会被包含在内?

最佳答案

如果你有一个父项目,你可以在父 pom 的 dependencyManagement 部分声明所有的依赖和它们的版本。这并不意味着所有项目都会使用所有这些依赖项,这意味着如果一个项目确实声明了依赖项,它将继承配置,因此它只需要声明依赖项的groupId和artifactId .您甚至可以在父项的 dependencyManagement 中声明您的子项目,而无需引入循环。

请注意,您也可以通过在 pluginManagement 部分中声明插件来对插件进行类似操作。这意味着任何声明插件的 child 都将继承配置。

例如,如果你有 4 个项目,parentcoreuiutils,你可以在父项中声明所有外部依赖项和内部项目版本。然后,子项目为它们声明的任何依赖项继承该配置。如果所有模块都具有相同的版本,甚至可以在父模块中声明为属性。

一个示例父级如下:

<project>
<modelVersion>4.0.0</modelVersion>
<groupId>name.seller.rich</groupId>
<artifactId>parent</artifactId>
<version>1.0.0</version>
<packaging>pom</packaging>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>name.seller.rich</groupId>
<artifactId>ui</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>name.seller.rich</groupId>
<artifactId>core</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>name.seller.rich</groupId>
<artifactId>utils</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<modules>
<module>utils</module>
<module>core</module>
<module>ui</module>
</modules>
</project>

而 utils、core 和 ui 项目继承了所有相关版本。实用程序:

<project>
<modelVersion>4.0.0</modelVersion>
<groupId>name.seller.rich</groupId>
<artifactId>utils</artifactId>
<!--note version not declared as it is inherited-->
<parent>
<artifactId>parent</artifactId>
<groupId>name.seller.rich</groupId>
<version>1.0.0</version>
</parent>
<dependencies>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</dependency>
</dependencies>
</project>

核心:

<project>
<modelVersion>4.0.0</modelVersion>
<groupId>name.seller.rich</groupId>
<artifactId>core</artifactId>
<parent>
<artifactId>parent</artifactId>
<groupId>name.seller.rich</groupId>
<version>1.0.0</version>
</parent>
<dependencies>
<dependency>
<groupId>name.seller.rich</groupId>
<artifactId>utils</artifactId>
</dependency>
</dependencies>

用户界面:

<project>
<modelVersion>4.0.0</modelVersion>
<groupId>name.seller.rich</groupId>
<artifactId>ui</artifactId>
<parent>
<artifactId>parent</artifactId>
<groupId>name.seller.rich</groupId>
<version>1.0.0</version>
</parent>
<dependencies>
<dependency>
<groupId>name.seller.rich</groupId>
<artifactId>core</artifactId>
</dependency>
</dependencies>
</project>

关于java - 在 <dependencyManagement> 部分声明依赖,即使依赖没有在任何地方使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/921599/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com