Домой java Maven — создание толстого файла Jar — пример One-JAR

Maven — создание толстого файла Jar — пример One-JAR

500
0

В этом уроке мы покажем вам, как использовать инструмент сборки Maven, плагин One-JAR, для создания одного Jar вместе с зависимыми Jar-файлами в один исполняемый файл Jar, так называемый fat Jar.

Используемые инструменты:

  1. Maven 3.1.1
  2. JDK 1,7
  3. Йода-время 2,5

1. Создайте простой Java-проект

Создайте проект Java из шаблона быстрого запуска Maven.


$ mvn archetype:generate -DgroupId=com.csharpcoderr.core.utils -DartifactId=dateUtils
-DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

Будут созданы следующие файлы и структура папок.


.
|____dateUtils
| |____pom.xml
| |____src
| | |____main
| | | |____java
| | | | |____com
| | | | | |____mkyong
| | | | | | |____core
| | | | | | | |____utils
| | | | | | | | |____App.java
| | |____test
| | | |____java
| | | | |____com
| | | | | |____mkyong
| | | | | | |____core
| | | | | | | |____utils
| | | | | | | | |____AppTest.java

Сделайте так, чтобы он поддерживал Eclipse.


$ mvn eclipse:eclipse

Импортирует проект в Eclipse IDE.

2. Обновите Pom.xml

Обновить pom.xml объявить йодатимские зависимости. Для вывода на Jar формат, убедитесь, что тег упаковки установлен на 'jar'. Прочитайте комментарии для самоочевидных.

pom.xml



4.0.0
com.csharpcoderr.core.utils
dateUtils

jar

1.0-SNAPSHOT
dateUtils
http://maven.apache.org 


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-jar-plugin



com.csharpcoderr.core.utils.App









3. Получить CurrentDate с JodaTime

Обновить сгенерированный App.java со следующим содержанием:

App.java


package com.csharpcoderr.core.utils;

import org.joda.time.LocalDate;

public class App {

public static void main(String[] args) {

System.out.println(getLocalCurrentDate());
}

// Печать текущей даты с JodaTime
private static String getLocalCurrentDate() {

LocalDate date = new LocalDate();
return date.toString();

}

}

4. Jar File

Maven упакует проект для создания окончательного файла Jar. Новый dateutils.jar создается в $project/target папка.


$ mvn package

Перечислите содержимое банки.


$ jar tf target/dateutils.jar

META-INF/
META-INF/MANIFEST.MF
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

Попробуйте запустить этот файл Jar.


$ java -jar dateutils.jar
Exception in thread "main" java.lang.NoClassDefFoundError: org/joda/time/LocalDate
at com.csharpcoderr.core.utils.App.getLocalCurrentDate(App.java:14)
at com.csharpcoderr.core.utils.App.main(App.java:9)
Caused by: java.lang.ClassNotFoundException: org.joda.time.LocalDate
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
... 2 more

Выше ожидаемое сообщение об ошибке, потому что joda-time.jar пропал, отсутствует.

5. Пример одной банки

Обновить pom.xml чтобы использовать плагин One-Jar, он создаст один Jar вместе с зависимыми Jar-файлами.

pom.xml









org.dstovall
onejar-maven-plugin
1.4.4



one-jar











onejar-maven-plugin.googlecode.com
http://onejar-maven-plugin.googlecode.com/svn/mavenrepo 




Снова упакуйте его, в папке «target» будут созданы две банки. dateUtils.jar а также dateUtils-one-jar.jar ,


$ mvn package

dateUtils-one-jar.jar это последняя толстая банка, которую вы хотите, перечислите содержимое банки:


$ jar tf target/dateutils.one-jar.jar

META-INF/MANIFEST.MF

main/dateutils.jar
lib/joda-time-2.5.jar

com/
com/simontuffs/
com/simontuffs/onejar/
.version
OneJar.class
com/simontuffs/onejar/Boot$1.class
com/simontuffs/onejar/Boot$2.class
com/simontuffs/onejar/Boot$3.class
com/simontuffs/onejar/Boot.class
com/simontuffs/onejar/Handler$1.class
com/simontuffs/onejar/Handler.class
com/simontuffs/onejar/IProperties.class
com/simontuffs/onejar/JarClassLoader$1.class
com/simontuffs/onejar/JarClassLoader$2.class
com/simontuffs/onejar/JarClassLoader$ByteCode.class
com/simontuffs/onejar/JarClassLoader$FileURLFactory$1.class
com/simontuffs/onejar/JarClassLoader$FileURLFactory.class
com/simontuffs/onejar/JarClassLoader$IURLFactory.class
com/simontuffs/onejar/JarClassLoader$OneJarURLFactory.class
com/simontuffs/onejar/JarClassLoader.class
com/simontuffs/onejar/OneJarFile$1.class
com/simontuffs/onejar/OneJarFile$2.class
com/simontuffs/onejar/OneJarFile.class
com/simontuffs/onejar/OneJarURLConnection.class
src/
src/com/
src/com/simontuffs/
src/com/simontuffs/onejar/
src/OneJar.java
src/com/simontuffs/onejar/Boot.java
src/com/simontuffs/onejar/Handler.java
src/com/simontuffs/onejar/IProperties.java
src/com/simontuffs/onejar/JarClassLoader.java
src/com/simontuffs/onejar/OneJarFile.java
src/com/simontuffs/onejar/OneJarURLConnection.java
doc/
doc/one-jar-license.txt

Плагин One-Jar помещает зависимости времени выполнения в lib папка, например lib/joda-time-2.5.jar и главный кувшин в main папка, например main/dateutils.jar , Кроме того, он также создает множество классов simontuffs для правильной загрузки включенных Jar-файлов.

Попробуйте запустить финальную флягу.


$ java -jar dateutils.one-jar.jar

2014-10-18

Готово.

Скачать исходный код

Загрузить — maven-one-jar-example.zip (6 КБ)

Рекомендации

  1. onejar-maven-плагин официальная страница
  2. Время йода
  3. Как создать файл JAR с Maven

фляга мавен одна баночка

Maven — создание толстого файла Jar — пример One-JAR

0.00 (0%) 0 votes

ЧИТАТЬ ТАКЖЕ:  Пример аннотации Spring AOP + AspectJ

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь