Помимо основного jar артефакта, создайте еще один jar с некоторыми зависимостями, но не со всеми, для распространения за пределами Maven - PullRequest
1 голос
/ 06 октября 2011

Я понимаю, что пользователи, использующие Maven, не должны заботиться о зависимостях, так как Maven будет загружать их, как указано в pom. Тем не менее, я хочу раздать еще одну банку неопытным пользователям. Поэтому я все еще хочу создать банку для Maven, никаких проблем там нет. Но я также хотел бы иметь возможность генерировать еще один jar с некоторыми зависимостями, включенными в. Под некоторыми зависимостями я подразумеваю, что я выберу некоторые зависимости, определенные в pom.xml, и включу их в этот другой jar-файл, который я распространю сам.

Итак, скажем, у меня есть 10 зависимостей в моем pom.xml. dep1.jar, dep2.jar, ..., dep10.jar.

Основной jar, сгенерированный для распространения с MAVEN, конечно же, не будет иметь ни одной из этих зависимостей. Но мне бы хотелось, чтобы была возможность генерировать еще один jar-файл, включая dep3.jar и dep4.jar.

Любая помощь будет высоко оценена!

РЕДАКТИРОВАТЬ: Направление меня на плагин Maven не помогает. Но приведение примера pom.xml делает :)

Ответы [ 3 ]

2 голосов
/ 06 октября 2011

Взгляните на maven-assembly-plugin .Вы можете настроить его для создания JAR-файла, содержащего все зависимости вашего проекта, а также исходный код проекта.Затем вы можете привязать выполнение плагина к фазе пакета, чтобы этот мега-jar был построен как часть обычного жизненного цикла.

0 голосов
/ 07 октября 2011

@ matt b ответил на это, но так как вы хотели фрагменты кода здесь, это идет. Это один из способов сделать это.

Создайте файл, скажем assemblyDescriptor.xml в папке src/main/assembly, следующим образом:

<assembly>
    <id>distribution</id>
    <formats>
        <format>zip</format>
    </formats>
    <dependencySets>
        <dependencySet>
            <outputDirectory>/my-distribution</outputDirectory>
            <includes>
                <include>group3:dep3</include>
                <include>group6:dep6</include>
                ...
            </includes>
            <unpack>true</unpack>
        </dependencySet>
    </dependencySets>
</assembly>

Укажите следующий плагин в вашем pom, если требуется в разделе <profile> для условного вызова.

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>2.2.1</version>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>single</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <descriptors>
                            <descriptor>src/main/assembly/assemblyDescriptor.xml</descriptor>
                        </descriptors>
                    </configuration>
                </plugin>

запустите mvn package или mvn install и найдите zip-файл в дополнение к банке проекта.

0 голосов
/ 06 октября 2011

Не уверен, что вы подразумеваете под банками, включенными в сгенерированные банки, но у вас есть несколько вариантов для игры.

Прежде всего вы можете использовать Плагин зависимостей Maven для извлечения зависимостей, а затем сгенерировать пакет, используя Плагин сборки Maven .

Кроме того, вы можете использовать плагин Maven Shade или плагин Maven JarJar , чтобы объединить несколько банок в один.

...