Я слышал, как люди говорят, что они создают fat JAR и развертывают его. Что они на самом деле имеют в виду?
Переведено автоматически
Ответ 1
Разные названия - это просто способы упаковки Java-приложений.
Skinny – Содержит только биты, которые вы буквально вводите в свой редактор кода, и ничего больше.
Тонкий – Содержит все вышеперечисленное плюс прямые зависимости приложения от вашего приложения (драйверы БД, служебные библиотеки и т.д.).
Полый - обратная сторона thin . Он содержит только биты, необходимые для запуска вашего приложения, но не содержит само приложение. По сути, это предварительно упакованный ”сервер приложений", на котором вы можете позже развернуть свое приложение, в том же стиле, что и традиционные серверы приложений Java EE, но с важными отличиями.
Fat / Uber – Содержит бит, который вы буквально пишете сами, плюс прямые зависимости вашего приложения, ПЛЮС биты, необходимые для запуска вашего приложения “само по себе”.
Fat jar or uber jar is a jar which contains all project class files and resources packed together with all it's dependencies. There are different methods for achieving such effect:
dependencies' jars are copied into main jar and then loaded using special class loader (onejar, spring-boot-plugin:repackage)
dependencies' jars are extracted at the top of main jar hierarchy (maven-assembly-plugin with it's jar-with-dependencies assembly)
dependencies' jars are unpacked at the top of main jar hierarchy and their packages are renamed (maven-shade-plugin with shade goal)
<project> <!-- ... --> <build> <!-- ... --> <plugins> <plugin> <!-- NOTE: We don't need a groupId specification because the group is org.apache.maven.plugins ...which is assumed by default. --> <artifactId>maven-assembly-plugin</artifactId> <version>2.6</version> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <classifier> </configuration> <!-- ... --> </project>