Каталог расширений

Популярные теги

3gp       avi       fb2       jpg       mp3       pdf      

Как создать jar файл


Как создать исполняемый jar в Intellij IDEA / how to create jar in IDEA

Создаем исполняемый jar в Intellij IDEA

Как оказалось, не так то и просто найти в просторах интернета информацию об этом. Есть много ссылок на то, как это делается в Eclipse, а про Intellij IDEA сказано не многим больше нуля. Поэтому я создал этот пост. Как создать исполняемый jar в Intellij IDEA / how to create jar in IDEA - 1IntelliJ IDEA дает возможность быстро создавать исполняемый JAR-файл вашей программы, содержащий модули со всеми зависимостями. Для того, чтобы создать JAR, необходимо проделать всего 3 пункта:
  1. Нажмите кнопку ‘+’ в диалоговом окне Project Structure и выберите соответствующий пункт (Рисунок 1):
    Как создать исполняемый jar в Intellij IDEA / how to create jar in IDEA - 2Рисунок 1 – Project Structure -> Artifacts -> Jar -> From modules with dependencies
  2. Далее IntelliJ IDEA показывает диалог, позволяющий настроить новый артефакт (Рисунок 2):
    Здесь нужно выбрать главный класс вашего проекта и нажать ОK
    Как создать исполняемый jar в Intellij IDEA / how to create jar in IDEA - 3

    Рисунок 2 – Диалог создания нового артефакта JAR
  3. После нажатия клавиши ОК, вы можете создать файл Jar с помощью пункта меню Build -> Build Artifact
    По умолчанию все библиотеки будут извлечены в целевой Jar. Сам исполняемый файл будет сгенерирован в директории out -> artifacts вашего проекта (Рисунок 3):
    Как создать исполняемый jar в Intellij IDEA / how to create jar in IDEA - 4

    Рисунок 3 – Месторасположение сгенерированного JAR файла
    Все, теперь исполняемый файл можно запускать.
См. также мои другие статьи:

Чем создать JAR файл? Программы для создания JAR файлов

JAR

Рассмотрим основные варианты, с помощью которых можно создать файл формата JAR (Java Archive File). Зачастую выполнение данной задачи не потребудет каких-либо особых хитростей, просто скачайте Java Development Kit (JDK) (для операционной системы Windows) - интерфейс программы не сложный, да и скачать ее вы можете бесплатно. Если же вы пользуетесь операционной системой Mac - скачайте Corel WinZip Mac как основную для данной платформы.

Вооружившись программой с правильным функционалом, вы наверняка не испытаете проблем с созданием файла JAR. Мы собрали в общий список все программы походящие под данную задачу для ОС Windows, Mac, Linux и сделали удобную таблицу:

Программы для создания JAR файлов

Чем создать JAR в Windows? Mac Linux

Общее описание расширения JAR

Файл JAR представляет из себя архив Java, являющийся видом обычного ZIP-архива, содержащего определенную часть данных с элементами языка программирования Java. Для того, чтобы реализовать JAR файл в качестве исполняемого, он должен содержать файл MANIFEST.MF, помещенный в каталог META-INF, где будет указан главный программный класс. Данный класс должен хранить метод main.

Узнать подробнее что такое формат JAR

Знаете другие программы, которые могут создать JAR? Не смогли разобраться как создать файл? Пишите в комментариях - мы дополним статью и ответим на ваши вопросы.

Как создать Jar файл в Maven – Devcolibri

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

1) Создание Maven проекта.

Есть два способа создать Maven project:

1. С помощью maven command:

$ mvn archetype:generate -DgroupId=com.devcolibri.core -DartifactId=projectMy -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

2. С иcпользованием IDE, в моем случае это Intellij IDEA 11.3

2. Создание jar файла

Чтобы создать jar файл нам потребуется добавить в конфигурационный Maven файл pom.xml.

В этом файле в теге <pagckaging>jar</pagckaging>

<project xmlns="http://maven.apache.org/POM/4.0.0" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
 http://maven.apache.org/maven-v4_0_0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>com.devcolibri.core</groupId>
 <artifactId>projectMy</artifactId>
 <packaging>jar</packaging>
 <version>1.0</version>
 <name>projectMy</name>
 <url>http://maven.apache.org</url>
 
 <properties>
 <jdk.version>1.6</jdk.version>
 </properties>
 
 <build>
 <plugins>
 <plugin>
 <groupId>org.apache.maven.plugins</groupId>
 <artifactId>maven-compiler-plugin</artifactId>
 <version>2.3.2</version>
 <configuration>
 <source>${jdk.version}</source>
 <target>${jdk.version}</target>
 </configuration>
 </plugin>
 </plugins>
 </build>
 </project>

Если вы попытаетесь собрать проект Maven, Maven упакует этот проект в “jar” файл с именем "projectMy-1.0.jar", найти этот файл вы можете в корне проекта в папке target.

3. Делаем *.jar исполняемым.

Для того, чтобы *.jar файл был исполняемый, мы должны объявить точку входа в приложениe через maven-jar-plugin в pom.xml

<plugin>
 <groupId>org.apache.maven.plugins</groupId>
 <artifactId>maven-jar-plugin</artifactId>
 <version>2.4</version>
 <configuration>
 <archive>
 <manifest>
 <mainClass>com.devcolibri.core.Main</mainClass>
 </manifest>
 </archive>
 </configuration>
 </plugin>

Чтобы выполнить jar файл, используйте java -jar :

$ java -jar superman-1.0.jar 
 Hello World!

Как создать исполняемый JAR с помощью Maven

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

Чтобы создать исполняемый файл jar, не требуются дополнительные зависимости. Нам нужно просто создать Java-проект Maven с одним классом и методом main(…).

В приведенном ниже примере мы создаем Java-класс ExecutableMavenJar. Для этого в файл pom.xml нужно добавить следующие элементы:

<modelVersion>4.0.0</modelVersion> <groupId>com.baeldung</groupId> <artifactId>core-java</artifactId> <version>0.1.0-SNAPSHOT</version> <packaging>jar</packaging>

Удостоверьтесь в том, что в конфигурации задан тип jar. Теперь можно приступить к реализации каждого из подходов.

Для этого мы используем плагин maven-dependency-plugin. Сначала скопируем все необходимые зависимости в указанную папку:

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>copy-dependencies</id> <phase>prepare-package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory> ${project.build.directory}/libs </outputDirectory> </configuration> </execution> </executions> </plugin>

Сначала мы задаем цель copy-dependencies, что указывает Maven скопировать эти зависимости в заданный outputDirectory.

В данном случае мы создадим папку с именем libs внутри каталога сборки проекта (обычно это папка target).

Затем мы создаем исполняемый файл jar с указанными путями к классам и со ссылкой на зависимости, скопированные на первом шаге:

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>libs/</classpathPrefix> <mainClass> org.baeldung.executable.ExecutableMavenJar </mainClass> </manifest> </archive> </configuration> </plugin>

Наиболее важной частью приведенного выше кода является конфигурация manifest. В ней мы добавляем classpath со всеми зависимостями (папка libs/), а также предоставляем информацию о главном классе.

Преимущества и недостатки этого подхода:

  • Преимущества — прозрачный процесс, в рамках которого можно прописать каждый шаг.
  • Недостатки — зависимости находятся вне финального файла jar. Поэтому он будет работать только, если папка libs будет доступна и видима для jar-файла.

Плагин Apache Maven Assembly позволяет объединять выходные данные проекта вместе с зависимостями, модулями, документацией и другими файлами в единый пакет.

Основной целью в плагине сборки является single. Она используется для создания любых сборок. Остальные цели устарели и будут удалены в следующей версии плагина.

Рассмотрим конфигурацию, заданную в файле pom.xml:

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <executions> <execution> <phase>package</phase> <goals> <goal>single</goal> </goals> <configuration> <archive> <manifest> <mainClass> org.baeldung.executable.ExecutableMavenJar </mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </execution> </executions> </plugin>

Как и при ручной настройке, сначала нужно предоставить информацию о главном классе. Но плагин автоматически скопирует все необходимые зависимости в файл JAR .

В descriptorRefs мы указали имя, которое будет добавлено к имени проекта. В нашем случае – это core-java-jar-with-dependencies.jar.

  • Преимущества – зависимости хранятся внутри jar-файла.
  • Недостатки — упрощенный контроль упаковки артефакта. Например, нет поддержки перемещения классов.

Плагин позволяет упаковывать артефакт в uber-jar, который включает в себя все зависимости, необходимые для запуска проекта. Кроме того, он поддерживает переименование пакетов некоторых зависимостей.

Рассмотрим приведенную ниже конфигурацию:

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <executions> <execution> <goals> <goal>shade</goal> </goals> <configuration> <shadedArtifactAttached>true</shadedArtifactAttached> <transformers> <transformer implementation= "org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass> </transformer> </transformers> </configuration> </execution> </executions> </plugin>

В этой конфигурации <shadedArtifactAttached> отмечает все зависимости, которые должны быть упакованы в файл jar.

Затем нам нужно указать реализацию трансформатора. В текущем примере мы использовали стандартную версию. В конце задаем основной класс приложения.

Выходной файл получит название core-java-0.1.0-SNAPSHOT-shaded.jar, где core-java — это имя проекта. За ним следуют версия и имя плагина.

  • Преимущества — зависимости внутри jar-файла, расширенный контроль упаковки артефакта.
  • Недостатки — сложная конфигурация (особенно если необходимо использовать расширенные функции).

Плагин предоставляет собственный загрузчик, который знает, как загружать классы и ресурсы из jar-файлов архива.

Рассмотрим приведенную ниже конфигурацию:

 <plugin> <groupId>com.jolira</groupId> <artifactId>onejar-maven-plugin</artifactId> <executions> <execution> <configuration> <mainClass>org.baeldung.executable. ExecutableMavenJar</mainClass> <attachToBuild>true</attachToBuild> <filename> ${project.build.finalName}.${project.packaging} </filename> </configuration> <goals> <goal>one-jar</goal> </goals> </execution> </executions> </plugin>

Сначала необходимо указать основной класс и прикрепить все зависимости сборки, используя для этого attachToBuild = true .

Также необходимо задать имя файла для вывода. Цель Maven — это one-jar.

В One Jar зависимости jar не будут расширены в файловую систему во время выполнения.

  • Преимущества — позволяет классам располагаться на верхнем уровне One Jar. Плагин поддерживает внешние jar и собственные библиотеки.
  • Недостатки – не обновляется с 2012 года.

Плагин позволяет упаковывать исполняемые архивы jar или war и запустить приложение «на месте». Он поддерживает Maven версии 3.2 или выше. Более подробное описание плагина доступно здесь.

Рассмотрим приведенную ниже конфигурацию:

 <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> <configuration> <classifier>spring-boot</classifier> <mainClass> org.baeldung.executable.ExecutableMavenJar </mainClass> </configuration> </execution> </executions> </plugin> 

Между Spring и другими плагинами есть два существенных отличия: цель выполнения называется repackage, а классификатор — spring-boot . Обратите внимание, что плагин можно использовать без Spring Boot.

  • Достоинства – зависимости располагаются внутри jar- файла, его можно запускать в любом доступном месте, улучшенный контроль упаковки артефакта, исключение зависимостей из jar-файла и упаковка war файлов.
  • Недостатки — добавляет ненужные классы, связанные с Spring и Spring Boot.

В последней части статьи мы рассмотрим упаковку автономного веб-приложения в jar-файл. Но для этого понадобится другой плагин.

<plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.0</version> <executions> <execution> <id>tomcat-run</id> <goals> <goal>exec-war-only</goal> </goals> <phase>package</phase> <configuration> <path>/</path> <enableNaming>false</enableNaming> <finalName>webapp.jar</finalName> <charset>utf-8</charset> </configuration> </execution> </executions> </plugin>

Чтобы создать jar-файл, запустите man package, который создаст webapp.jar в каталоге target.

Чтобы запустить приложение, просто введите в консоли: java -jar target / webapp.jar и проверьте результат по адресу: localhost:8080/.

  • Преимущества — наличие одного файла, простота развертывания и запуска.
  • Недостатки — размер файла намного больше.

Обратите внимание на то, что это последняя версия данного плагина, поддерживающая сервер Tomcat7. Чтобы избежать ошибок, обязательно убедитесь в том, что для зависимости Servlets scope задано значение provided. Иначе во время выполнения jar-файла возникнет конфликт:

<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <scope>provided</scope> </dependency>

В этой статье мы рассмотрели несколько способов создания исполняемого jar-файла с помощью различных плагинов Maven. Полную реализацию этого руководства вы сможете найти в проектах, опубликованных на Github:

Исполняемый jar

Исполняемый war

Как проверить? Чтобы скомпилировать проект в исполняемый файл jar, запустите Maven с помощью команды mvn clean package.

Надеемся, что данная статья помогла разобраться в этой теме.

Данная публикация представляет собой перевод статьи «How to Create an Executable JAR with Maven» , подготовленной дружной командой проекта Интернет-технологии.ру

Как создать файл jar со структурой пакета?

У меня есть структура папок

/com/cdy/ws/a.class files /com/cdy/ws/b.class files /com/cdy/ws/c.class files 

когда я запускаю следующую команду " jar cvf asd.сосуд.* класс " он дает jar со всеми файлами класса. Но структура папок не создается. Все файлы классов должны быть в разделе " com.cdy / ws", но все классы находятся на одном уровне META-INF. Может ли кто-нибудь сказать мне, что такое команда для создания структуры пакета?

спасибо

10 ответов


вам нужно начать создавать банку в root файлы.

так, например:

jar cvf program.jar -C path/to/classes . 

, что предполагает, что path/to/classes содержит