[英]How to produce an executable jar file with all maven dependencies?
[英]Maven: Generating an executable jar file with all the dependencies
我最近將我的Java項目之一轉換為Maven項目。 我的pom.xml看起來像這樣:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<packaging>jar</packaging>
<groupId>com.myproject.groupid</groupId>
<artifactId>myproject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>MyProject</name>
<description>The first version of my maven project</description>
<dependencies>
<dependency>
<groupId>com.dependent.jar</groupId>
<artifactId>dependentjar</artifactId>
<version>0.0.1</version>
<scope>system</scope>
<type>jar</type>
<systemPath>${project.basedir}/jars/dependent.jar</systemPath>
</dependency>
<dependency>
<groupId>org.apache.ws.commons.schema</groupId>
<artifactId>XmlSchema</artifactId>
<version>1.4.3</version>
</dependency>
<dependency>
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.myproject.main.MainClass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</build>
</project>
當我執行mvn compile和mvn install時,項目運行正常,並且還會生成jar。 但是,當我嘗試運行jar(使用java -jar MyProject.jar)時,出現錯誤消息:線程“ main” java.lang.NoClassDefFoundError中的異常,這是因為maven無法添加指定的從屬jar在本節中。 [在運行時不可用]
有人可以讓我知道將systemPath jar復制到maven生成的jar的最佳方法嗎?
我查看了maven-shade-plugin和maven-assembly-plugin,但兩者都發現運氣不佳。 任何幫助,將不勝感激!
嘗試將其添加到您的maven-jar-plugin配置中
<addClasspath>true</addClasspath>
<classpathPrefix>*path to dependencies*</classpathPrefix>
另外,要管理您的依賴項,您可以使用Maven依賴項插件
在pom的build部分中,您可以使用:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.2</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<artifactSet>
<includes>
<include>com:library:**</include>
</artifactSet>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
然后,在命令行上,您可以運行mvn package
,它將在輸出中顯示其排除的jar。 然后,您可以相應地包括選定的罐子。 如果隨后收到NoClassDefFoundError
,則可能需要將Java指向類,例如,使用com.company.Main
作為java
命令的參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.