Как я могу создать исполняемый JAR с зависимостями, используя Maven? - PullRequest
2171 голосов
/ 22 февраля 2009

Я хочу упаковать свой проект в один исполняемый файл JAR для распространения.

Как сделать так, чтобы проект Maven упаковывал все JAR-файлы зависимостей в мой выходной JAR-файл?

Ответы [ 34 ]

0 голосов
/ 01 марта 2019
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.4.1</version>
            <configuration>
                <!-- get all project dependencies -->
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <!-- bind to the packaging phase -->
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
0 голосов
/ 13 февраля 2015

Хорошо, так что это мое решение. Я знаю, что он не использует файл pom.xml. Но у меня была проблема, моя программа компилировалась и работала на NetBeans, но она не работала, когда я пробовал Java -jar MyJarFile.jar. Теперь я не до конца понимаю Maven, и думаю, поэтому у меня возникли проблемы с тем, чтобы Netbeans 8.0.2 включил мой файл jar в библиотеку, чтобы поместить их в файл jar. Я думал о том, как я использовал файлы JAR без Maven в Eclipse.

Это Maven, который может скомпилировать все зависимости и плагины. Не Netbeans. (Если вы можете получить Netbeans и использовать java .jar для этого, скажите, пожалуйста, как (^. ^) V)

[Решено - для Linux] путем открытия терминала.

Тогда

cd /MyRootDirectoryForMyProject

Далее

mvn org.apache.maven.plugins:maven-compiler-plugin:compile

Далее

mvn install

Это создаст файл JAR в целевой директории.

MyJarFile-1.0-jar-with-dependencies.jar

Теперь

cd target

(Вам может понадобиться запустить: chmod +x MyJarFile-1.0-jar-with-dependencies.jar)

И, наконец,

java -jar MyJarFile-1.0-jar-with-dependencies.jar

Пожалуйста, смотрите

https://cwiki.apache.org/confluence/display/MAVEN/LifecyclePhaseNotFoundException

Я опубликую это решение на нескольких других страницах с похожей проблемой. Надеюсь, я смогу спасти кого-нибудь от недели разочарования.

0 голосов
/ 27 мая 2015

В этом сообщении блога показан другой подход к объединению плагинов maven-jar и maven-assembly. С помощью xml конфигурации сборки из поста в блоге также можно контролировать, будут ли расширяться зависимости или они будут просто собраны в папке и на которые будет ссылаться запись classpath в манифесте:

Идеальным решением является включение jar-файлов в папку lib, а файл manifest.mf основного jar-файла включает все jar-файлы в classpath.

И именно это описано здесь: https://caffebig.wordpress.com/2013/04/05/executable-jar-file-with-dependent-jars-using-maven/

0 голосов
/ 03 марта 2016

Пожалуйста, проверьте этот ответ с демонстрационной демонстрацией https://stackoverflow.com/a/35359756/5678086 для создания полного пакета со всеми зависимостями

...