[英]Executable jar with dependency using maven without unpacking jars but include classpath
我可能需要这样的问题
我如何执行可执行jar?
java -jar at commandline在线程“main”中给出了异常java.lang.NoClassDefFoundError:org / apache / log4j / Logger
我在我的目标目录和lib目录中创建了executable.jar,所有依赖jar都在/ lib directoty下。
这是我的pom.xml的片段。我应该改变什么?
</dependencies>
<dependency>
<groupId><gId></groupId>
<artifactId><aId></artifactId>
<version><v></version>
</dependency>
<dependency>
<groupId>gI2</groupId>
<artifactId>aI2</artifactId>
<version>v</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.proj.app</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>
使用Maven Shade插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.6</version>
<configuration>
<createDependencyReducedPom>true</createDependencyReducedPom>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass><Your main class here></mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
这将包括一个jar中的所有依赖项,并自动将主类添加到您的Manifest文件中。
确保运行“包”目标。
您的发行版需要包含您在应用程序中使用的库的所有JAR文件。 程序集插件专为满足此要求而设计。
我通常使用程序集插件来创建包含整个发行版的ZIP文件。 这是我自己的应用程序的JAR文件,所有必要的配置文件,当然 - 所有库JAR。
此外,您的可执行JAR文件需要适当的清单文件。 也就是说,它需要一个正确的主要classe条目和一个类路径。
您可以使用App Assembler插件执行此操作。 它会将依赖项复制到文件夹并创建快捷方式来执行主类。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.