【发布时间】:2021-09-12 13:56:51
【问题描述】:
在我的 maven 项目中,我的系统依赖项很少,如下所示:
<dependency>
<groupId>Com.myCompany</groupId>
<artifactId>myArtifact</artifactId>
<scope>system</scope>
<version>1.0</version>
<systemPath>${project.basedir}\lib\myArtifact-1.0.jar</systemPath>
</dependency>
我正在尝试创建一个包含所有必需依赖项的可执行 jar [fat jar],以便该 jar 可以独立运行。
我正在使用“maven-assembly-plugin”以这种方式进行打包:
<plugin>
<artifactId>maven-assembly-plugin<artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true<addClasspath>
<mainClass>com.mycompany.Application</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>jar-with-dependencies</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
问题是创建包时系统依赖项不包含在 jar 中,我在运行它时遇到 ClassNotFound 异常。
有人可以指导我正确的配置方式吗?
更新:
正如很少有人提到的那样,我可以将依赖项安装到本地存储库。这里的问题是我们有一个自动构建服务器,当我们提交到 repo 时它会被触发。我真的不想在远程构建服务器上安装它们。
【问题讨论】:
-
为什么不先将系统依赖安装到本地仓库?
-
要详细说明@JFabianMeier,请参阅此answer。
-
系统范围依赖从何而来?这不会默认与 maven-assembly-plugin 打包(需要补充配置)...
-
@khmarbaise 感谢您的回复。这些依赖来自项目目录,即文件系统。
标签: java maven build executable-jar