Вот важный факт из Maven: полное руководство по сборке, глава 8.3.2 :
При создании сборок как части
вашего нормального процесса сборки, те
сборочные архивы будут прикреплены к
артефакт вашего основного проекта. это
означает, что они будут установлены и
развернутый рядом с основным артефактом,
и затем разрешимы во многом
так же. Каждый артефакт сборки
учитывая те же основные координаты
(groupId, artifactId и version) как
основной проект. Однако эти
артефакты являются вложениями, которые в
Maven означает, что они являются производными работами
основанный на некотором аспекте основного
проект сборки. Чтобы предоставить пару
примеры, исходные сборки содержат
исходные данные для сборки проекта,
и сборки с jar-зависимостями
содержать классы проекта плюс его
зависимостей. Прикрепленные артефакты
разрешено обходить мавена
требование одного проекта, один
артефакт именно из-за этого
Производное качество.
Так как сборки (обычно)
приложенные артефакты, каждый должен иметь
классификатор, чтобы отличить его от
главный артефакт, в дополнение к
нормальные координаты артефакта. От
по умолчанию, классификатор такой же, как
идентификатор дескриптора сборки.
При использовании встроенной сборки
дескрипторы, как указано выше, сборка
идентификатор дескриптора обычно
также как используемый идентификатор
в descriptorRef для этого типа
сборка.
Важно понимать, что, хотя большинство проектов Maven генерируют только один артефакт, возможно создать более одного и использовать координату классификатора, чтобы связать эти артефакты с одной и той же координатой GAV. В вашем случае вы захотите прикрепить «одиночную» цель модуля сборки, используя что-то похожее на это:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-2</version>
<dependencies>
<dependency>
<groupId>org.sonatype.mavenbook.assemblies</groupId>
<artifactId>web-fragment-descriptor</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>assemble</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptorRefs>
<descriptorRef>web-fragment</descriptorRef>
</descriptorRefs>
</configuration>
</execution>
</executions>
</plugin>
Вы можете присоединить столько исполнений, сколько пожелаете, но если у вас есть несколько исполнений для определенного плагина, для каждого выполнения потребуется уникальный элемент "id". «Единственная» цель в плагине Maven Assembly делает то же самое, что и цель «Assembly», за исключением того, что она предназначена для привязки к жизненному циклу.
Другая часть вашего вопроса касается исключения определенных ресурсов из JAR, вы можете сделать это с помощью , исключая ресурсы в вашем POM .