Próbuję wygenerować plik jar wykonywalny dla małego projektu domowego o nazwie "logmanager" przy użyciu mavena, tak jak to:
Jak mogę utworzyć wykonywalny plik JAR z zależnościami za pomocą Maven?
Dodałem pokazany tam fragment do pom.xml i uruchomiłem mvn assembly: assembly. Generuje dwa pliki jar w logmanager / target: logmanager-0.1.0.jar i logmanager-0.1.0-jar-with-dependencies.jar. Po dwukrotnym kliknięciu pierwszego słoika pojawia się błąd:
Could not find the main class: com.gorkwobble.logmanager.LogManager. Program will exit.
Nieco inny błąd po dwukrotnym kliknięciu pliku jar-with-dependencies.jar:
Failed to load Main-Class manifest attribute from: C:\EclipseProjects\logmanager\target\logmanager-0.1.0-jar-with-dependencies.jar
Skopiowałem i wkleiłem ścieżkę i nazwę klasy oraz sprawdziłem pisownię w POM. Moja główna klasa uruchamia się dobrze z konfiguracji uruchamiania zaćmienia. Czy ktoś może mi pomóc dowiedzieć się, dlaczego mój plik jar nie działa? Poza tym, dlaczego na początek są dwa słoiki? Daj mi znać, jeśli potrzebujesz więcej informacji.
Oto pełna pom.xml
treść w celach informacyjnych:
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.gorkwobble</groupId>
<artifactId>logmanager</artifactId>
<name>LogManager</name>
<version>0.1.0</version>
<description>Systematically renames specified log files on a scheduled basis. Designed to help manage MUSHClient logging and prevent long, continuous log files.</description>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.2</version>
<!-- nothing here -->
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-4</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>com.gorkwobble.logmanager.LogManager</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<!-- commons-lang -->
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.4</version>
</dependency>
<!-- Quartz scheduler -->
<dependency>
<groupId>opensymphony</groupId>
<artifactId>quartz</artifactId>
<version>1.6.3</version>
</dependency>
<!-- Quartz 1.6.0 depends on commons collections -->
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.1</version>
</dependency>
<!-- Quartz 1.6.0 depends on commons logging -->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1</version>
</dependency>
<!-- Quartz 1.6.0 requires JTA in non J2EE environments -->
<dependency>
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
<version>1.1</version>
<scope>runtime</scope>
</dependency>
<!-- junitx test assertions -->
<dependency>
<groupId>junit-addons</groupId>
<artifactId>junit-addons</artifactId>
<version>1.4</version>
<scope>test</scope>
</dependency>
<!-- junit dependency; FIXME: make this a separate POM -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.1</version>
</dependency>
</dependencies>
<dependencyManagement>
</dependencyManagement>
</project>
źródło
Pomogła mi również odpowiedź Pascala Thiventa . Ale jeśli zarządzasz wtyczkami w
<pluginManagement>
elemencie, musisz ponownie zdefiniować zestaw poza zarządzaniem wtyczkami, w przeciwnym razie zależności nie są pakowane w jar po uruchomieniumvn install
.źródło
Jeśli nie chcesz wykonywać celu montażu na pakiecie, możesz użyć następnego polecenia:
Tutaj pakiet jest słowem kluczowym.
źródło
Kliknij prawym przyciskiem myszy projekt i daj maven build, maven clean, maven generowanie zasobów i maven install. Plik jar zostanie wygenerowany automatycznie.
źródło