我想在jar中包含一个带有依赖项的外部jar(在依赖项中指定)。
pom.xml依赖:
<dependency>
<groupId>my.package</groupId>
<artifactId>my-artifact</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${basedir}\..\lib\my-artifact.jar</systemPath>
</dependency>
以下是jar-with-dependencies的代码:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>CtrlpConversion</id>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>my.package.Main</mainClass>
<packageName>my.package</packageName>
</manifest>
</archive>
<finalName>MyExecutable</finalName>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
此pom.xml生成的.jar不包含my-artifact.jar的类。当我尝试运行主要时,我收到以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: my/package/ClassThatINeed
at my.package.Main.main(Main.java:29)
Caused by: java.lang.ClassNotFoundException: my.package.ClassThatINeed
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more
我很乐意帮助找到这个问题的解决方案。谢谢!!