当前位置: 首页 > 知识库问答 >
问题:

Maven依赖树和pom依赖

窦凯定
2023-03-14

我想知道以下jar的所有传递依赖项:

<dependency>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>xmlbeans-maven-plugin</artifactId>
    <version>2.3.3</version>
</dependency>

将经典命令移动到pom。项目定义依赖关系和输入的xml:

mvn依赖:树

将显示:

+- org.codehaus.mojo:xmlbeans-maven-plugin:jar:2.3.3:compile
|  +- xml-resolver:xml-resolver:jar:1.2:compile
|  +- org.apache.maven:maven-model:jar:2.0.6:compile
|  +- org.apache.maven:maven-artifact:jar:2.0.6:compile
|  +- org.apache.maven:maven-project:jar:2.0.6:compile
|  |  +- org.apache.maven:maven-settings:jar:2.0.6:compile
|  |  +- org.apache.maven:maven-profile:jar:2.0.6:compile
|  |  +- org.apache.maven:maven-artifact-manager:jar:2.0.6:compile
|  |  |  +- org.apache.maven:maven-repository-metadata:jar:2.0.6:compile
|  |  |  \- org.apache.maven.wagon:wagon-provider-api:jar:1.0-beta-2:compile
|  |  +- org.apache.maven:maven-plugin-registry:jar:2.0.6:compile
|  |  \- org.codehaus.plexus:plexus-container-default:jar:1.0-alpha-9-stable-1:compile
|  |     +- junit:junit:jar:3.8.1:compile
|  |     \- classworlds:classworlds:jar:1.1-alpha-2:compile
|  +- org.apache.maven:maven-plugin-api:jar:2.0.6:compile
|  +- org.apache.xmlbeans:xmlbeans:jar:2.4.0:compile
|  |  \- stax:stax-api:jar:1.0.1:compile
|  \- org.codehaus.plexus:plexus-utils:jar:1.5.6:compile

我没看到魔咒父母:

  <groupId>org.codehaus.mojo</groupId>
  <artifactId>mojo-parent</artifactId>
  <version>21</version>
  <packaging>pom</packaging>

乍一看,mvn命令似乎可以显示非pom类型的依赖项。

有没有一种方法可以精确地显示使jar保持活动状态所需的每个文件?

谢谢

共有1个答案

闾丘霖
2023-03-14

实际上,很难显示“保持罐活着”所需的文件。你的项目可能有一些隐含的依赖关系。

您可以运行mvn dependency:analyze,它应该会显示未使用的依赖项。但你已经意识到哪一个可以自由移除。http://maven.apache.org/plugins/maven-dependency-plugin/analyze-mojo.html

如果你不想让传递依赖带来任何意外,我也可以推荐你——使用maven强制器。你可以禁止所有未声明的传递依赖。http://maven.apache.org/enforcer/enforcer-rules/banTransitiveDependencies.html

 类似资料:
  • 我在中与有依赖关系。在这个依赖项中,我有一组依赖项。 现在我需要将这些JAR中的一些添加到assembly中(包括它们以使用DependencySet->includes构建)。 如果我设置了组和POM依赖项的工件,那么在我的构建中得到的结果是POM.xml。 如果我设置到`“include”组和来自外部pom的依赖项工件,我会得到一个构建错误: 程序集配置不正确:一个或多个筛选器的条件不匹配。

  • 我们有一个模块化项目,包含大约10个工件: 此外,一些工件之间存在依赖关系: 我们当前的设置如下所示: parent是包含父POM的工件 这个父POM定义了所有必要的依赖项(比如Spring、JPA等等)进来 我们所有的工件也都在中定义 我们的工件将父工件称为明显的父工件 只有父POM定义版本。其他所有的POM都没有 我们使用三个数字的版本控制方案: 例如: 问题是: 一旦我们更改了工件的版本(例

  • 问题内容: 是否有任何预先存在的Maven插件或命令来更新POM中的依赖关系?示例:(如果这是在我的POM中) 有没有可以运行的命令或插件来将依赖关系更新为: 问题答案: 尝试使用maven-versions-plugin,尤其是versions:use-latest-versions目标。

  • 主要内容:排除依赖,可选依赖,排除依赖 VS 可选依赖 我们知道 Maven 依赖具有传递性,例如 A 依赖于 B,B 依赖于 C,在不考虑依赖范围等因素的情况下,Maven 会根据依赖传递机制,将间接依赖 C 引入到 A 中。但如果 A 出于某种原因,希望将间接依赖 C 排除,那该怎么办呢?Maven 为用户提供了两种解决方式:排除依赖(Dependency Exclusions)和可选依赖(Optional Dependencies)。 排除依赖

  • Maven将使用其最近的WINS策略自动解决依赖关系冲突,在这种情况下,它将在结果: [INFO]-(commons-collections:commons-collections:jar:2.1:compile-因与2.0冲突而省略) 在本例中,如果选择commons-collections:2.1,我将有一个备用依赖关系树,可能包含多个其他依赖关系。 我目前正在做的工作是识别与其他依赖项有冲突