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

时间:2016-10-24 10:22:46

标签: java spring maven classpath jar-with-dependencies

我有一个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 。 我试过了 。和./resources。但是B并没有得到它。如何获取资源文件夹的绝对路径并将其提供给B.或者为A和B设置公共类路径。

1 个答案:

答案 0 :(得分:1)

您可以尝试将maven-dependency-plugin解压缩到classpath unpack依赖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>