2013-07-16 10 views
11

Ich lese viele Lösungen zum Erstellen ausführbarer jar mit Abhängigkeiten (maven Schatten Plugin, Maven Abhängigkeits Plugin, Maven Assembly Plugin) und all diese Plugins entpacken Abhängigkeit Gläser und packen sie in ausführbarem Glas. Das einzige Plugin, das pack pack dependency jars entpackt in ausführbare jar ist ein jar-plugin, aber dieses plugin fügen seine runner code in ausführbare jar.Maven Plugin zum Erstellen ausführbarer jar mit Abhängigkeiten nicht entpackt (Glas mit Gläsern)

Gibt es eine Lösung jar wie diese zu erstellen:

├─executable.jar 
├──lib/ 
├───dependency1.jar 
├───dependency2.jar 
. 
. 
. 

und diese Lösung zu arbeiten.

+0

Sie wahrscheinlich eine benutzerdefinierte Klasse-Loader, um die Klassen geladen werden müssen, die in Gläsern in einem Archiv gebündelt sind. Haben Sie [ein Glas] (http://one-jar.sourceforge.net/) angeschaut? –

Antwort

0
<plugins> 
      <plugin> 
       <artifactId>maven-eclipse-plugin</artifactId> 
       <version>2.9</version> 
       <configuration> 
        <additionalProjectnatures> 
         <projectnature>org.springframework.ide.eclipse.core.springnature</projectnature> 
        </additionalProjectnatures> 
        <additionalBuildcommands> 
         <buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand> 
        </additionalBuildcommands> 
        <downloadSources>true</downloadSources> 
        <downloadJavadocs>true</downloadJavadocs> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>2.5.1</version> 
       <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
        <compilerArgument>-Xlint:all</compilerArgument> 
        <showWarnings>true</showWarnings> 
        <showDeprecation>true</showDeprecation> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>exec-maven-plugin</artifactId> 
       <version>1.2.1</version> 
       <configuration> 
        <mainClass>org.test.int1.Main</mainClass> 
       </configuration> 
      </plugin> 
     </plugins> 
+0

können Sie diese in Ihrer pom.xml hinzufügen. Danach können Sie ausführbare Jar erhalten – Ritesh

1

Die gängigste Methode ist die Montage-Plugin zu verwenden, die Sie Verpackung in einem Sie

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <configuration> 
     <archive> 
       <manifest> 
        <mainClass>com.somewhere.Main</mainClass> 
       </manifest> 
     </archive> 
     <descriptorRefs> 
       <descriptorRef>jar-with-dependencies</descriptorRef> 
     </descriptorRefs> 
    </configuration> 
    <executions> 
      <execution> 
       <id>make-assembly</id> 
       <phase>package</phase> 
       <goals> 
        <goal>single</goal> 
       </goals> 
     </execution> 
    </executions> 
</plugin> 

Auch müssen so konfigurieren, können Sie Assembly Descriptor für die Konfiguration

<configuration> 
    <appendAssemblyId>false</appendAssemblyId> 
    <descriptors> 
     <descriptor>src/main/assembly/assembly.xml</descriptor> 
    </descriptors> 
</configuration> 

angeben Und assembly.xml selbst

<assembly> 
    <id>assembly</id> 
    <formats> 
     <format>jar</format> 
    </formats> 
    <includeBaseDirectory>false</includeBaseDirectory> 
    <fileSets> 
     <fileSet> 
      <directory>${project.build.outputDirectory}</directory> 
      <outputDirectory>/</outputDirectory> 
     </fileSet> 
    </fileSets> 
</assembly> 

Assembly Descriptor kann auch Abhängigkeitsabschnitt enthalten:

<!-- lib --> 
<dependencySets> 
    <dependencySet> 
     <outputDirectory>lib</outputDirectory> 
    </dependencySet> 
</dependencySets> 

Soweit ich Sie suchen die letzte verstehen. Es enthält nur JAR-Dateien ohne Änderungen in die Baugruppe. So wird die endgültige Lösung wie folgt aussehen:

<assembly> 
    <id>assembly</id> 
    <formats> 
     <format>jar</format> 
    </formats> 
    <includeBaseDirectory>false</includeBaseDirectory> 
    <!-- lib --> 
    <dependencySets> 
     <dependencySet> 
      <outputDirectory>lib</outputDirectory> 
     </dependencySet> 
    </dependencySets> 
</assembly> 

und pom Teil:

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <configuration> 
     <appendAssemblyId>false</appendAssemblyId> 
     <descriptors> 
      <descriptor>src/main/assembly/assembly.xml</descriptor> 
     </descriptors> 
    </configuration> 
    <executions> 
      <execution> 
       <id>make-assembly</id> 
       <phase>package</phase> 
       <goals> 
        <goal>single</goal> 
       </goals> 
     </execution> 
    </executions> 
</plugin> 
Verwandte Themen