如何为 Maven 项目中的所有依赖项设置公共类路径?

How to setup a common classpath for all dependencies inside a maven project?

我有一个 spring 项目,它被编译成一个 jar 文件。让我们称这个项目为 A。 还有另一个项目 B 是项目 A 的依赖项。我无法控制项目 B。项目 B 以两个文件的形式提供。 一个是可执行的 jar 文件,而另一个是 zip 文件。此 zip 文件包含项目的所有资源。 要从 B 调用 API,我需要传递一个 resourceLocation 参数(它是上述资源文件夹的 url)。 我将 B.jar 和 B.zip 作为依赖项包含在我的 A 的 pom 中。

现在我为我的项目 A 创建了一个可执行的 jar-with-all-dependencies。 B.zip 中的资源文件夹与其他依赖项一起存在于我的 jar 中。

现在的问题: 从 A 内部调用 B 的 API 时我应该提供的 resourcePath 应该是什么。 我努力了 。和./资源。但是B不明白。如何获取资源文件夹的绝对路径并将其提供给 B。或者为 A 和 B 设置公共类路径。

你可以尝试 maven-dependency-plugin 将 zip 解压到类路径 解压依赖 zip 资源文件夹,这会将工件添加到 A

的类路径中
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.2</version>
    <executions>
      <execution>
        <id>unpack-sigar</id>
        <phase>package<!-- or any other valid maven phase --></phase>
        <goals>
          <goal>unpack-dependencies</goal>
        </goals>
        <configuration>
          <includeGroupIds>somegroupid</includeGroupIds>
          <includeArtifactIds>B</includeArtifactIds>
          <outputDirectory>
             ${project.build.directory}/src/main/resources             
          </outputDirectory>
        </configuration>
      </execution>
    </executions>
</plugin>