Экспорт проекта jsprit maven в исполняемый файл jar
Я пытаюсь создать исполняемый файл.jar из проекта maven, используя eclipse mars. Сам проект можно найти по https://github.com/jsprit/jsprit.
До сих пор я успешно импортировал jsprit в eclipse как проект maven и могу запускать примеры как Java-приложение.
Я еще не очень успешно экспортировал его как исполняемый файл. Допустим, я хочу экспортировать SimpleExample.java. Я создал.jar, но если я пытаюсь запустить jsprit-examples-1.6.2-SNAPSHOT-jar-with-dependencies.jar, я получаю следующее сообщение об ошибке:
Ошибка: не удалось найти или загрузить основной класс jsprit.examples.SimpleExample
Файл pom.xml, который находится под jsprit-examples, выглядит следующим образом:
<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">
<parent>
<groupId>jsprit</groupId>
<artifactId>jsprit</artifactId>
<version>1.6.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jsprit-examples</artifactId>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<versionRange>[1.0.0,)</versionRange>
<goals>
<goal>enforce</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore/>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>jsprit.examples.SimpleExample</mainClass>
</manifest>
</archive>
<descriptors>
<descriptor>src/main/resources/assemblies/jar-with-dependencies.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
<repositories>
<repository>
<id>jsprit-snapshots</id>
<url>https://github.com/jsprit/mvn-rep/raw/master/snapshots</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>jsprit-instances</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>jsprit-core</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>jsprit-analysis</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
Все остальное так же, как в репозитории github. Я запустил "Maven Build..." на jsprit-примерах. Под "Редактировать конфигурацию-> Цели" я сделал "чистая сборка пакета: один".
Это мой первый опыт работы со сборкой Maven, так что это может быть очень простой проблемой для тех, кто имеет опыт работы с Maven.
Спасибо!
1 ответ
Если вы хотите поместить все зависимости в один исполняемый jar, вам нужно создать uber-jar. Я обычно делаю это с плагином Maven Shade.