Ответ 1
Как вы видели, нет типа упаковки ZIP, поэтому имеет смысл использовать упаковку pom, как вы выбрали.
Вы столкнулись с небольшой дырой в обработке плагина сборки. Вы можете решить эту проблему, указав несколько наборов файлов в сборке с помощью <outputDirectory>/<outputDirectory>
, по одному для каждого каталога, который вы хотите включить, это, очевидно, PITA и, вероятно, не приемлемое решение.
Альтернативный подход заключается в использовании задачи копирования Ant для копирования всех DLL в промежуточный каталог, а затем включить этот каталог в сборку.
Следующая конфигурация должна делать то, что вам нужно:
Конфигурация анти-плагина:
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.3</version>
<executions>
<execution>
<phase>process-resources</phase>
<configuration>
<tasks>
<copy todir="${project.build.directory}/dll-staging">
<fileset dir="${basedir}/${project.artifactId}">
<include name="**/Bin/Release/*.dll"/>
<include name="**/Bin/Release/*.pdb"/>
</fileset>
<flattenmapper/>
</copy>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
Сборка:
<assembly>
<id>bin</id>
<formats>
<format>zip</format>
</formats>
<fileSets>
<fileSet>
<directory>${project.build.directory}/dll-staging</directory>
<outputDirectory>/</outputDirectory>
<includes>
<include>*.dll</include>
<include>*.pdb</include>
</includes>
</fileSet>
</fileSets>
</assembly>