2015-11-20 2 views
0

Я хочу создать файл jar с использованием maven-shade-plugin без зависимостей сторонних разработчиков. Тем не менее, банки третьей степени зависимости должны быть скопированы в некоторую папку (например, libs). Итак, когда я распространяю свое приложение, я распространяю папку main.jar и libs вместе, поэтому, когда я запускаю созданную главную банку, она должна загружать зависимости из папки libs.Maven Shade Plugin Создать Jar без зависимостей и баны зависимости от загрузки из другого места

Возможно ли это сделать в maven-shade-plugin? то как его настроить?

+0

Простой ответ №. – khmarbaise

ответ

0

Это не может быть достигнуто, так как плагин maven shade извлекает все содержимое файла jar-файла зависимости (файлы классов) в основной файл jar. Однако это может быть достигнуто с использованием maven-jar-plugin и maven-dependency-plugin. Это мои настройки сборки:

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

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

0

Конечно, я также построил большую банку непосредственно через Maven плагин тени.

Вот мое использование для создания приложения пружины в одном банке, включая все пружины рамочным зависимости:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-shade-plugin</artifactId> 
    <version>2.4.3</version> 
    <executions> 
     <execution> 
      <phase>package</phase> 
      <goals> 
       <goal>shade</goal> 
      </goals> 
      <configuration> 
       <transformers> 
        <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> 
         <resource>META-INF/spring.handlers</resource> 
        </transformer> 
        <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> 
         <resource>META-INF/spring.schemas</resource> 
        </transformer> 
        <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> 
         <resource>META-INF/spring.tooling</resource> 
        </transformer> 
        <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 
         <manifestEntries> 
          <Main-Class>${project.build.mainClass}</Main-Class> 
          <Build-Number>1</Build-Number> 
          <Specification-Title>${project.artifactId}</Specification-Title> 
          <Specification-Version>${project.version}</Specification-Version> 
          <Implementation-Title>${project.artifactId}</Implementation-Title> 
          <Implementation-Version>${project.version}</Implementation-Version> 
          <Implementation-Vendor-Id>${project.groupId}</Implementation-Vendor-Id> 
         </manifestEntries> 
        </transformer> 
       </transformers> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

В дополнение о сравнении с Maven Assembly Plugin, как уже упоминалось в HP, Maven Ассамблеи Plugin обеспечить только некоторые основные однако Maven Shade Plugin может обеспечить больше контроля.

Смежные вопросы