2013-07-16 10 views
11

Przeczytałem wiele rozwiązań służących do budowania pliku wykonywalnego z zależnościami (maven shade plugin, pluven dependency plugin, dodatek do instalacji maven) i wszystkie te zależności rozpakowują wtyczki słoiki i zapakuj je w plik wykonywalny. Jedyną wtyczką, która pakuje słoiczki zależności rozpakowane w pliku wykonywalnego, jest jedna wtyczka słoika, ale ta wtyczka dodaje swój kod runner do pliku wykonywalnego.Wtyczka Maven do tworzenia pliku wykonywalnego z niezapakowanymi zależnościami (słoik z słojami)

Czy istnieje rozwiązanie do tworzenia słoik tak:

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

i że rozwiązanie do pracy.

+0

Najprawdopodobniej potrzebują niestandardowej klasy ładowarka do ładowania klas, które są wiązane w słoikach wewnątrz archiwum. Czy spojrzałeś na [jeden słoik] (http://one-jar.sourceforge.net/)? –

Odpowiedz

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

możesz dodać yhis do swojego pom.xml. po tym możesz uzyskać wykonywalny słoik – Ritesh

1

Najczęstszym sposobem jest użycie wtyczki zespół, który pozwoli Ci skonfigurować opakowanie w sposób trzeba

<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> 

Ponadto można określić deskryptor montażową do konfiguracji

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

I samego assembly.xml

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

deskryptor Zgromadzenie może również zawierać sekcję Zależność:

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

O ile mi zrozumieć szukasz ostatniego. Ponieważ zawiera on tylko pliki jar w zespole bez żadnych modyfikacji. Więc ostateczne rozwiązanie będzie wyglądać następująco:

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

i pom części:

<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> 
Powiązane problemy