Содержание

В этом уроке мы покажем вам, как использовать Maven Shade Plugin для создания Jar вместе с Jar-файлами зависимостей в одном исполняемом файле Jar, так называемом fat Jar или uber Jar.
Заметка
Плагин Maven Shade — лучший плагин для создания JAR-файла / фидера uber, если сравнивать с плагином сборки , поскольку он предоставляет функцию перемещения классов , чтобы избежать конфликта имен классов в пути к классам.
1. Просмотрите проект Java
Предыдущий Java-проект ( dateutils ) будет использован повторно, см. Следующую структуру папок
Заметка
Этот проект имеет одну зависимость — joda-time.jar
2. Pom.xml
Читайте комментарий ниже для самоочевидности.
pom.xml
4.0.0
com.csharpcoderr.core.utils
dateUtils
jar
1.0-SNAPSHOT
dateUtils
http://maven.apache.org url>
1.7
2.5
4.11
junit
junit
${junit.version}
test
joda-time
joda-time
${jodatime.version}
dateutils
org.apache.maven.plugins
maven-eclipse-plugin
2.9
true
false
org.apache.maven.plugins
maven-compiler-plugin
2.3.2
${jdk.version}
${jdk.version}
org.apache.maven.plugins
maven-shade-plugin
2.3
package
shade
com.csharpcoderr.core.utils.App
3. Упакуйте это
Чтобы получить окончательный Jar, просто упакуйте его:
$ mvn package
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ dateUtils ---
[INFO] Building jar: /Users/mkyong/dateUtils/target/dateutils.jar
[INFO]
[INFO] --- maven-shade-plugin:2.3:shade (default) @ dateUtils ---
[INFO] Including joda-time:joda-time:jar:2.5 in the shaded jar.
[INFO] Replacing original artifact with shaded artifact.
[INFO] Replacing /Users/mkyong/dateUtils/target/dateutils.jar with /Users/mkyong/dateUtils/target/dateUtils-1.0-SNAPSHOT-shaded.jar
[INFO] Dependency-reduced POM written at: /Users/mkyong/dateUtils/dependency-reduced-pom.xml
[INFO] Dependency-reduced POM written at: /Users/mkyong/dateUtils/dependency-reduced-pom.xml
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.594s
[INFO] Finished at: Tue Oct 21 15:24:28 MYT 2014
[INFO] Final Memory: 17M/42M
[INFO] ------------------------------------------------------------------------
Два файла JAR будут созданы в target папка.
- dateutils.jar — Проект и классы зависимостей в одном jar, это то, что вы хотите.
- original-dateutils.jar — только ваши классы проекта
PS Сгенерированный dependency-reduced-pom.xml только для справки, просто проигнорируйте это.
4. Просмотрите
Перечислите содержание dateutils.jar
$ jar tf target/dateutils.jar
META-INF/MANIFEST.MF
META-INF/
com/
com/mkyong/
com/mkyong/core/
com/mkyong/core/utils/
com/mkyong/core/utils/App.class
META-INF/maven/
META-INF/maven/com.csharpcoderr.core.utils/
META-INF/maven/com.csharpcoderr.core.utils/dateUtils/
META-INF/maven/com.csharpcoderr.core.utils/dateUtils/pom.xml
META-INF/maven/com.csharpcoderr.core.utils/dateUtils/pom.properties
META-INF/LICENSE.txt
META-INF/NOTICE.txt
org/
org/joda/
org/joda/time/
org/joda/time/base/
org/joda/time/base/AbstractDateTime.class
org/joda/time/base/AbstractDuration.class
// ...
org/joda/time/Weeks.class
org/joda/time/YearMonth$Property.class
org/joda/time/YearMonth.class
org/joda/time/YearMonthDay$Property.class
org/joda/time/YearMonthDay.class
org/joda/time/Years.class
META-INF/maven/joda-time/
META-INF/maven/joda-time/joda-time/
META-INF/maven/joda-time/joda-time/pom.xml
META-INF/maven/joda-time/joda-time/pom.properties
MANIFEST.MF
Manifest-Version: 1.0
Build-Jdk: 1.7.0_05
Built-By: mkyong
Created-By: Apache Maven 3.1.1
Main-Class: com.csharpcoderr.core.utils.App
Archiver-Version: Plexus Archiver
Запустить его
$ java -jar target/dateutils.jar
2014-10-21
Скачать исходный код
Загрузить его — dateUtils-maven-shade-plugin.zip (10 КБ)
Рекомендации
- Плагин Apache Maven Shade
- Сборочный плагин Apache Maven
- Создание файла Fat Jar — пример Maven One-JAR
- Создать толстый файл Jar — Maven Assembly Plugin
- Как создать файл JAR с Maven
0.00 (0%) 0 votes




