Как правильно строить банки из IntelliJ?



У меня есть проект, который содержит один модуль, и некоторые зависимости.
Я хотел бы создать jar, в отдельном каталоге, который содержит скомпилированный модуль. Кроме того, я хотел бы иметь зависимости, присутствующие рядом с моим модулем.



независимо от того, как я кручу процесс "build jar" IntelliJ, вывод моего модуля кажется пустым (кроме файла META-INF).

885   12  

12 ответов:

вот как построить банку с IntelliJ 10 http://blogs.jetbrains.com/idea/2010/08/quickly-create-jar-artifact/

файл - > структура проекта -> настройки проекта -> артефакты -> нажмите зеленый знак плюс -> Jar - > из модулей с зависимостями...

выше устанавливается "скелет", в котором будет сохранена банка. На самом деле построить и сохранить его, сделать следующее:

извлечь в цель Банку

ОК

Построить / Построить Артефакт

недавно у меня была эта проблема, и я думаю, что эти шаги легко выполнить, если какое-либо предыдущее решение или ссылка отсутствуют.

Как создать .jar использование IntelliJ IDEA 14.1.5:

  1. Файл > Сохранить Все.
  2. запустите драйвер или класс с помощью метода main.
  3. Файл > Структура Проекта.
  4. Выберите Вкладку "Артефакты".
  5. Нажмите зеленую кнопку Плюс в верхней части окна.
  6. выберите JAR из выпадающего меню Добавить. Выбирать "Из модулей с зависимостями"
  7. выбрать главный класс.
  8. переключатель должен выбрать " извлечь в целевую банку.- Нажмите кнопку ОК.
  9. установите флажок "построить на make"
  10. Нажмите кнопку Применить и ОК.
  11. в главном меню выберите построение выпадающего списка.
  12. выберите опцию Создать артефакты.

Это все еще проблема в 2017 году, я надеюсь, что это поможет кому-то там! Я нашел 2 возможности для создания рабочих jar-s под IntelliJ 2017.2

1. Создание артефакта из IntelliJ:

  • перейти к структуре проекта:

File menu

  • создать новый артефакт:

Create a new artifact

  • выбрать главный класс, и обязательно измените папку манифеста:

enter image description here

вы должны изменить каталог манифеста:

<project folder>\src\main\java 

заменить "java" на "ресурсы"

<project folder>\src\main\resources

вот как это должно выглядеть:

correct way for new manifest

  • затем вы выбираете зависимости, которые вы хотите упаковать в свою банку, или рядом с вашим файлом jar

  • чтобы построить свой артефакт перейдите к постройте артефакты и выберите "перестроить". Он создаст папку " out " с вашим файлом jar и его зависимостями.

enter image description here

2. Использование Maven-assembly-plugin

добавить раздел сборки в файл pom

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <finalName>ServiceCreate</finalName>
                    <appendAssemblyId>false</appendAssemblyId>
                    <archive>
                        <manifest>
                            <mainClass>com.svt.optimoo.App</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
  • создать новую конфигурацию запуска / отладки:

Create a new run/debug configuration:

  • выбрать применение:

Choose application

  • заполните форму
  • добавьте цель maven "assembly: single" после сборки, которая будет выполнена последней

enter image description here

Final setup

  • сохраните его, а затем запустите

enter image description here

эта процедура создаст файл jar под "target" папка

JAR file location

для тех, кто извлекает выгоду из изображений, как я делаю:

Файл - > Структура Проекта

enter image description here

enter image description here

enter image description here

enter image description here

Это, вероятно, немного поздно, но мне удалось решить это таким образом -> откройте с помощью winrar и удалите ECLIPSEF.RSA и ECLIPSEF.SF в папке META-INF, кроме того, поставил "Main-class: main_class_name" (без ".класс") в манифесте.МФ. Убедитесь, что вы дважды нажали "Enter" после последней строки, иначе это не сработает.

идея 8.1.3

Jar в порядке, так как есть скомпилированный вывод в каталоге 'output' (project/out/production//)

Я думаю, вы должны запустить 'make' перед созданием jar

для зависимостей просто проверьте "показать библиотеку" и выберите то, что вы хотите.

вы можете взглянуть на Maven (http://maven.apache.org). Вы можете использовать его либо в качестве основного процесса сборки для вашего приложения, либо просто для выполнения определенных задач через диалоговое окно редактирования конфигураций. Процесс создания JAR модуля в Maven довольно тривиален, если вы хотите, чтобы он включал все зависимости в самоисполняемую JAR, которая также тривиальна.

Если вы никогда не использовали Maven раньше, то вы хотите прочитать лучше Сборки С Помощью Maven.

С Maven вы можете использовать этот плагин:

 <build>
    <plugins>

        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>[path you class main]</mainClass>
                    </manifest>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase> 
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

Если вы используете сторонние библиотеки с вашим проектом или если у вас возникли проблемы с созданием манифеста.MF файл правильно, могут возникнуть конфликты при запуске JAR-файлов, созданных с помощью

File > Project Structure > Artifacts > '+' > JAR > From modules with dependencies > .....

метод, упомянутый выше.

вместо этого я предлагаю вам создать пустую банку и добавить все остальные элементы в корень вывода вручную. Замечательная статья в блоге для этого метода можно найти здесь: http://karthicraghupathi.com/2016/07/10/creating-an-executable-jar-in-intellij-idea/ я попробовал шаги, упомянутые там, и все работало отлично для меня!

некоторые другие ответы бесполезны, потому что как только вы повторно импортируете проект IntelliJ IDEA из проекта maven, все изменения будут потеряны.

создание jar должно быть вызвано конфигурацией запуска / отладки, а не настройками проекта.

Jetbrains имеет хорошее описание того, как вы можете сделать это здесь:

https://www.jetbrains.com/help/idea/maven.html

прокрутите вниз до раздела под названием "Настройка триггеров для целей Maven".

(единственным недостатком их описания является то, что их скриншоты находятся в черно-белой цветовой схеме по умолчанию вместо супер-удивительной темы darcula. Фу!)

Итак, в основном, вы открываете панель "проекты Maven", находите интересующий вас проект (в вашем случае проект, который строит ваш jar), под ним вы находите цель maven, которую вы хотите выполнить (обычно цель "пакет" создает jars,) вы открываете контекстное меню на нем (щелкните правой кнопкой мыши на машине Windows), и там будет "выполнить перед запуском/отладкой..."вариант, который вы можете выбрать, и он возьмет вас за руку оттуда. Действительно простой.

в случае если вы пытаетесь построить банку с Котлин вам нужно создать src/main/java папка и использовать эту папку в качестве места для папки META-INF.

Ant и Maven широко используются. Я предпочитаю Ant, я чувствую, что это более легкий, и вы разработчик больше контролируете. Некоторые предположили бы, что это его недостаток :-)

Comments

    Ничего не найдено.