使用Maven嵌套嵌套依赖项而不创建阴影罐

问题描述

我创建了两个Maven项目。以下是两个项目的pom文件

  1. 核心库-
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.demo</groupId>
    <artifactId>core-library</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>Core</name>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.reflections</groupId>
                <artifactId>reflections</artifactId>
                <version>0.9.12</version>
                <scope>compile</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.reflections</groupId>
            <artifactId>reflections</artifactId>
        </dependency>
    </dependencies>
</project>
  1. 实用程序库-
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.demo</groupId>
    <artifactId>utility-library</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>Utility</name>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.demo</groupId>
                <artifactId>core-library</artifactId>
                <version>0.0.1-SNAPSHOT</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.demo</groupId>
            <artifactId>core-library</artifactId>
        </dependency>
    </dependencies>
</project> 

现在,核心库具有一些外部依赖性,例如org.reflections:reflections等。所以我的期望是,当我向实用程序库添加核心库时,这些外部依赖项应自动添加到实用程序库的依赖项树中。

但是实际上,这些嵌套的依赖关系并未包含在实用程序库的依赖关系树中。

下面是我在实用程序库上运行mvn dependency:tree时的输出

 --- maven-dependency-plugin:2.8:tree (default-cli) @ utility-library ---
[INFO] com.demo:utility-library:jar:0.0.1-SNAPSHOT
[INFO] +- com.demo:core-library:jar:0.0.1-SNAPSHOT:compile
INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

我尝试了this堆栈溢出问题的解决方案,但问题尚未解决

有人可以帮我吗?

P.S。 -我必须实现嵌套的依赖项包含,而不能创建胖/带阴影/超大的jar,因为它会增加实际jar的大小,并且我还想进一步将Utility-library用作其他项目中的maven依赖项。

更新: 当我尝试使用-X(启用调试日志)标志构建实用程序库时,出现以下错误

[WARNING] The POM for com.demo:core-library:jar:0.0.1-SNAPSHOT is invalid,transitive dependencies (if any) will not be available: 3 problems were encountered while building the effective model for com.demo:core-library:0.0.1-SNAPSHOT
[ERROR] Invalid packaging for parent POM com.demo:core-library:0.0.1-SNAPSHOT,must be "pom" but is "jar" @
[ERROR] Invalid packaging for parent POMcom.demo:core-library:0.0.1-SNAPSHOT,must be "pom" but is "jar" @
[FATAL] The parents form a cycle: com.demo:core-library:0.0.1-SNAPSHOT -> com.demo:core-library:0.0.1-SNAPSHOT @ 

解决方法

您的POM看起来正确。

reflections是Maven应该自动绘制的传递依赖。

如果看不到,请查看mvn dependency:tree。它应该在此处列出。

也许您的IDE正在显示废话。