如何为 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>
我有一个 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>