Ответ 1
Чтобы предотвратить сборку необходимых сборок, вы можете использовать решение @Raghuram (+1 для этого). Я также попробовал пропустить зависимые от тестовых зависимостей и нашел вопрос, что это невозможно сделать так просто - как тест означает "все" в семантике плагина.
Таким образом, решение об исключении предоставленной и тестовой области - это включить время выполнения программы.
<includeScope>runtime</includeScope>
После сбора зависимостей вы можете скопировать проект jar с maven-antrun-plugin в целевой каталог, например:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${java.io.tmpdir}/test</outputDirectory>
<includeScope>runtime</includeScope>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<phase>package</phase>
<configuration>
<tasks>
<copy
file="${build.directory}/${project.artifactId}-${project.version}.jar"
todir="${java.io.tmpdir}/test" />
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Я не знаю другого решения - помимо создания нового pom-dist.xml(возможно, <packaging>pom</packaging>
), который просто удерживает зависимость от вашей библиотеки и собирает все тестовые/предоставленные области всех транзитивных зависимостей. Вы можете выполнить это с помощью mvn -f pom-dist.xml package
, если вы не хотите предоставлять совершенно новый проект.