2014-04-11 9 views
9

Używam mvn package do tworzenia działającego słoika z wszystkimi zależnościami zapakowanymi w środku, co działa dobrze. Ale wolałbym, aby wszystkie zewnętrzne zależności były spakowane w osobnym folderze. Co musiałbym zatem zmienić?Jak umieścić wszystkie zależności w oddzielnym folderze dla działającego słoika?

<plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <version>2.4</version> 
     <configuration> 
      <descriptorRefs> 
       <descriptorRef>jar-with-dependencies</descriptorRef> 
      </descriptorRefs> 
      <archive> 
       <manifest> 
        <mainClass>my.MainApp</mainClass> 
       </manifest> 
      </archive> 
     </configuration> 
     <executions> 
      <execution> 
       <id>make-assembly</id> 
       <phase>package</phase> 
       <goals> 
        <goal>single</goal> 
       </goals> 
      </execution> 
     </executions> 
     </plugin> 
+0

Możesz uzyskać pomoc od [Copy dependencies Mojo] (https://maven.apache.org/plugins/maven-dependency-plugin/copy-dependencies-mojo.html). –

Odpowiedz

10

Użyj maven-dependencies-plugin określić katalog docelowy dla realizacji copy-dependencies.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <version>2.5.1</version> 
    <executions> 
     <execution> 
     <id>copy-dependencies</id> 
     <phase>package</phase> 
     <goals> 
     <goal>copy-dependencies</goal> 
     </goals> 
     <configuration> 
     <outputDirectory>${project.build.directory}/lib/</outputDirectory> 
     </configuration> 
     </execution> 
    </executions> 
</plugin> 

Aktualizacja:

Aby pozwolić słoik wiedzieć, gdzie znaleźć folder lib, można określić to jako wartość w manifestClass-Path pomocą nadzieję, że ten maven-jar-plugin

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <configuration> 
    <archive> 
     <manifest> 
     <addClasspath>true</addClasspath> 
     <classpathPrefix>lib/</classpathPrefix> 
     <mainClass>foo.bar.MainClass</mainClass> 
     </manifest> 
    </archive> 
    </configuration> 
</plugin> 

pomaga.

+0

A w jaki sposób działający jar będzie wiedział, w którym katalogu szukać potrzebnych zależności? – membersound

+0

@membersound Zobacz aktualizację. – Will

Powiązane problemy