2016-04-21 2 views
0

In Intellij kann ich ein Artefakt erstellen, das mir erlaubt, eine JAR-Datei zu erstellen, obwohl mein Projekt andere JAR-Dateien (wie Treiber) verwendet. Traditionell würde ich, indem sie in meinem Classpath wie so ein Projekt mit jar Abhängigkeiten kompilieren:Erstellen eines Java-Projekts mit Jars in einem Jar (Befehlszeile)

javac -cp .:dependency.jar Main.java 

und dann in der Lage sein Main laufen, indem Sie:

java -cp .:dependency.jar Main 

Meine Frage ist, wie kann ich Erstellen Sie eine JAR-Datei mit dieser neuen Main? Ich kann tun:

jar cvf Main.jar Main.java 

, die eine jar-Datei erstellen, aber es läuft nicht und sagt:

no main manifest attribute, in Main.jar 

Ich mag würde wissen, wie meine anderen jar zu Paketabhängigkeiten in auf ausführbare Krug.

Antwort

1

Option 1: Mit Maven Plug-In, wenn Sie Maven verwenden:

 <plugin> 
      <artifactId>maven-jar-plugin</artifactId> 
      <configuration> 
       <archive> 
        <manifest> 
         <mainClass>Path.to.your.main.class</mainClass> 
         <addClasspath>true</addClasspath> 
        </manifest> 
       </archive> 
      </configuration> 
     </plugin> 

Option 2: Federverschluß Mit Fett jar zu erstellen. Dies umfasst alle abhängigen JAR-Dateien. Stellen Sie sicher, dass Sie die Spring-Boot-Abhängigkeit angeben.

 <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
      <version>1.3.3.RELEASE</version> 
      <executions> 
       <execution> 
        <goals> 
         <goal>repackage</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

Option 3: ohne Hilfe von Maven und Spring:

erstellen manifest.txt-Datei mit folgendem Inhalt:

Main-Class: path.to.your.main.class 

jar verwenden Sie den Befehl erstellen: jar -cvfm Application.jar manifest.txt /path/to/*.class