阴影类(来自 uber jar)在要导入的其他项目中不可见

use*_*589 5 java uberjar maven-3 maven

我正在尝试隐藏依赖项(构建 uber jar)并在其他项目中导入。在 uber jar 中我可以看到类,但是当我尝试导入阴影文件夹/包时不显示。下面是我的 pom.xmls

带有阴影依赖项和 uber jar 的 Test1

<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>test</groupId>
  <artifactId>test</artifactId>
  <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>


  <properties>
        <jdk.version>1.8</jdk.version>
        <jodatime.version>2.5</jodatime.version>
    </properties>

  <dependencies>
        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
            <version>${jodatime.version}</version>
        </dependency>
    </dependencies>

    <build>
        <finalName>test</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-eclipse-plugin</artifactId>
                <version>3.1.0</version>
                <configuration>
                    <downloadSources>true</downloadSources>
                    <downloadJavadocs>false</downloadJavadocs>
                </configuration>
            </plugin>

            <!-- Set a compiler level -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.7.0</version>
                <configuration>
                    <source>${jdk.version}</source>
                    <target>${jdk.version}</target>
                </configuration>
            </plugin>

        <!-- Maven Shade Plugin -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-shade-plugin</artifactId>
          <version>3.1.0</version>
          <executions>
             <!-- Run shade goal on package phase -->
            <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
              <relocations>
                <relocation>
                    <pattern>org.joda</pattern>
                    <shadedPattern>test.shaded.org.joda</shadedPattern>
                </relocation>
                </relocations>

            </configuration>
              </execution>
          </executions>
        </plugin>

        </plugins>
    </build>


</project>
Run Code Online (Sandbox Code Playgroud)

我在其中添加 test1 作为依赖项的 Test2

    <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>test2</groupId>
      <artifactId>test2</artifactId>
      <version>0.0.1-SNAPSHOT</version>

        <dependencies>
            <dependency>
                <groupId>test</groupId>
                <artifactId>test</artifactId>
                <version>0.0.1-SNAPSHOT</version>
            </dependency>
        </dependencies>
    </project>
Run Code Online (Sandbox Code Playgroud)

但是当我尝试import test.shaded.org.joda在 Test2 项目中时,没有显示依赖项。