Рубрики
Без рубрики

Maven – Создание файла fat Jar – Пример одной банки

– Maven – Создайте файл fat Jar – Пример одной БАНКИ

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

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

  1. Мавен 3.1.1
  2. JDK 1.7
  3. Джода-время 2,5

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

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

$ mvn archetype:generate -DgroupId=com.mkyong.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.

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

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


	4.0.0
	com.mkyong.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.mkyong.core.utils.App
			     
			   
			
		  
						
		
	
	

3. Получить текущую дату с помощью JodaTime

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

package com.mkyong.core.utils;

import org.joda.time.LocalDate;

public class App {

	public static void main(String[] args) {

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

	//Print current date with JodaTime
	private static String getLocalCurrentDate() {
		
		LocalDate date = new LocalDate();
		return date.toString();
		
	}

}

4. Файл Jar

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.mkyong.core.utils/
META-INF/maven/com.mkyong.core.utils/dateUtils/
META-INF/maven/com.mkyong.core.utils/dateUtils/pom.xml
META-INF/maven/com.mkyong.core.utils/dateUtils/pom.properties

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

$ java -jar dateutils.jar 
Exception in thread "main" java.lang.NoClassDefFoundError: org/joda/time/LocalDate
	at com.mkyong.core.utils.App.getLocalCurrentDate(App.java:14)
	at com.mkyong.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 чтобы использовать плагин с одной банкой, он создаст одну банку вместе со своими банками зависимостей.



  
     

	
	
		org.dstovall
		onejar-maven-plugin
		1.4.4
		
		  
			
				one-jar
			
		  
		
	

	
  

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

Упакуйте его снова, в папке “цель” будут созданы две банки – dateUtils.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, которые помогают правильно загружать включенные банки.

Попробуйте запустить последнюю банку с жиром.

$ java -jar dateutils.one-jar.jar 

2014-10-18

Сделано.

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

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

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

Оригинал: “https://mkyong.com/maven/maven-create-a-fat-jar-file-one-jar-example/”