1

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

现在,我为我的项目 A 创建了一个带有所有依赖项的可执行 jar。与其他依赖项一起,来自 B.zip 的资源文件夹存在于我的 jar 中。

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

4

1 回答 1

1

您可以尝试maven-dependency-plugin unpack zip to classpath 解压依赖 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>
于 2016-10-24T11:40:32.107 回答