Зависимости, указанные в POM, не разрешены в сгенерированном банке в правильном каталоге

Я хочу создать JAR-файл моего приложения maven. Итак, чтобы связать зависимости, я использовал maven-assembly-plugin. Но я хочу, чтобы зависимости находились в папке lib /, а не в другом месте. Мой текущий тег плагина pom.xml -

<plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.4.1</version>
            <configuration>
                <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>

Пожалуйста, предложите. Также можно добиться того же с плагином maven jar.

После указанных выше изменений в POM зависимости генерируются в банке, которая создается с суффиксом «jar-with-dependencies». Но зависимые банки разбросаны. Я хочу, чтобы все эти зависимые банки были частью одной папки lib, аналогичной WEB-INF / lib для файлов войны. Как мне этого добиться?


person Pratik Shelar    schedule 14.10.2014    source источник
comment
Уточните, в чем проблема конкретнее.   -  person Alexey Malev    schedule 14.10.2014
comment
Если вам нравится иметь все зависимости в папке lib, чем вам нужен дескриптор сборки, НО это не будет работать с jar, потому что jar не поддерживает такие вещи.   -  person khmarbaise    schedule 14.10.2014


Ответы (1)


Вы можете добиться этого с помощью настраиваемого дескриптора сборки (файла xml) следующим образом:

<assembly
   xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">

  <id>dist</id>

  <formats>
    <format>dir</format>
  </formats>

  <fileSets>
    <fileSet>
      <directory>target</directory>
      <outputDirectory>/</outputDirectory>
      <includes>
        <include>your-application.jar</include>
      </includes>
    </fileSet>
  </fileSets>

  <dependencySets>
    <dependencySet>
      <outputDirectory>lib</outputDirectory>
    </dependencySet>
  </dependencySets>

</assembly>

Вы должны указать на дескриптор сборки в конфигурации плагина сборки maven:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-assembly-plugin</artifactId>
  <version>2.4.1</version>
  <configuration>
    <descriptors>
      <descriptor>assemble.xml</descriptor>
    </descriptors>
  </configuration>
  ...
</plugin>

надеюсь, это поможет

person DirkNM    schedule 14.10.2014
comment
[ОШИБКА] Не удалось выполнить цель org.apache.maven.plugins: maven-assembly-plugin: 2. 4.1: одиночный (make-assembly) в проекте XXXX: в параметрах выполнения или дескрипторе сборки не указаны форматы. - ›[Справка 1] - person Pratik Shelar; 14.10.2014
comment
Я обновил свой ответ. Также ознакомьтесь с maven.apache.org/plugins/maven-assembly -plugin / assembly.html для получения дополнительной информации. - person DirkNM; 14.10.2014