Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java tools & IDE's > IDEA + Maven - Не работает


Автор: wowka19 4.8.2016, 16:49
Создал проект Maven через IDEA.
Создал простой класс с main().
Обнаружил что в IDEA куча способов сборки - не понятно как они вообще связаны (просто build, Plugins, Lifecycle), доки только запутывают. Как рассово верно производить сборку?
Тем не менее я испытал все возможные способы сборки, и у меня все же как-то получилось запустить свой HelloWorld в jar, но только через саму IDEA.
При запуске "java helloworld.jar" - пишет Error: Could not find or load main class helloworld.jar.
Открываю MANIFEST.MF - там не указан майн класс. Через IDEA добавить не получилось (дурацкая IDE). Вручную добавляю "Main-Class: org.home.HelloWorld" (мой класс лежит в org/home/HelloWorld.class и пакет тоже верно задан: package org.home;) - эффекта ноль! Все равно не работает!
Что я делаю не так?

Автор: LSD 5.8.2016, 13:35
Цитата(wowka19 @  4.8.2016,  17:49 Найти цитируемый пост)
Как рассово верно производить сборку?

Мавен-ом. На вкладке мавен, выделяешь goals clean+install щелкаешь правой кнопкой - create ...
У тебя в run появится пункт который будет собирать проект мавеном.



Цитата(wowka19 @  4.8.2016,  17:49 Найти цитируемый пост)
Что я делаю не так?

Все smile
У тебя проект собирается мавеном, а ты вместо того чтобы его и конфигурировать, пытаешься через идею что-то делать.  Тебе надо конфигурировать сам мавен. https://maven.apache.org/plugins/maven-jar-plugin/examples/manifest-customization.html.

Автор: lazycat 29.11.2016, 16:15
У меня возникла та же проблема (решил отдельную тему не заводить, продолжить имеющуюся)

Цитата(LSD @  5.8.2016,  13:35 Найти цитируемый пост)
Мавен-ом. На вкладке мавен, выделяешь goals clean+install щелкаешь правой кнопкой - create ...
У тебя в run появится пункт который будет собирать проект мавеном.


Можно подробнее, что за вкладка maven имеется в виду? Ни на Maven Projects ни на Settings -> Maven ничего похожего на выбор goal нет. Есть еще какая-то вкладка Maven?

Кстати, смотрю на файл pom.xml - там вообще ничего похожего на  тег build нет. 

Буду чрезвычайно благодарен за помощь

Автор: LSD 29.11.2016, 18:44
Цитата(lazycat @  29.11.2016,  17:15 Найти цитируемый пост)
Ни на Maven Projects ни на Settings -> Maven ничего похожего на выбор goal нет. Есть еще какая-то вкладка Maven?

В Maven Projects в конкретном модуле в разделе Lifecycle есть все goal-ы.

Автор: lazycat 29.11.2016, 19:01
Цитата(LSD @  29.11.2016,  18:44 Найти цитируемый пост)
В Maven Projects в конкретном модуле в разделе Lifecycle есть все goal-ы.


Да, я эти goal-ы вижу и могу выполнить, однако проблема этим не решается (напомню, автор первого поста писал, что в архиве в файле манифеста не прописывается main класс).

В принципе, дописать пару строк конфигурации в описание плагина несложно, в инете полно примеров, но проблема в том, что в pom.xml вообще нет раздела build (!!!).  А если еще и раздел build руками дописывать, возникает резонный вопрос: а зачем мне тогда архетип и мавен вообще smile
В общем, подозреваю я, что ломлюсь в открытые двери...
Я бы списал проблему на то, что ахетип кривой, но это же классический архетип, его команда generate по умолчанию предлагает.
Сгенерировал и сбилдил проект из командной строки, та же проблема - pom.xml без <build>, а архив без main класса.
Одним словом, я в раздумьях ...



Автор: LSD 29.11.2016, 20:47
Цитата(lazycat @  29.11.2016,  20:01 Найти цитируемый пост)
Да, я эти goal-ы вижу и могу выполнить, однако проблема этим не решается (напомню, автор первого поста писал, что в архиве в файле манифеста не прописывается main класс).

Ты вначале спрашивал совсем про другое:
Цитата(lazycat @ 29.11.2016,  17:15)
Цитата(LSD @  5.8.2016,  13:35 Найти цитируемый пост)
Мавен-ом. На вкладке мавен, выделяешь goals clean+install щелкаешь правой кнопкой - create ...
У тебя в run появится пункт который будет собирать проект мавеном.

Можно подробнее, что за вкладка maven имеется в виду? Ни на Maven Projects ни на Settings -> Maven ничего похожего на выбор goal нет. Есть еще какая-то вкладка Maven?

Что касается main класса в манифесте, то смотри первую ссылку и https://maven.apache.org/shared/maven-archiver/index.html.
Код

            <plugin>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.0.2</version>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>com.foo.Bar</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>

Автор: lazycat 6.12.2016, 20:39
Цитата(LSD @  29.11.2016,  20:47 Найти цитируемый пост)
Ты вначале спрашивал совсем про другое


Наверное просто сумбурно выразился. 
Главная проблема: в pom файле нет ни <build> ни <archive>.
В принципе, проблем нет, можно повставлять их руками, но если использую архетип, ожидаю, что заготовка будет более или менее вменяемой. Поневоле приходит мысль, что делаю что-то не так.

Прошу прощения, что вместо конкретного вопроса в рассуждения пустился.



Автор: LSD 7.12.2016, 13:31
Цитата(lazycat @  6.12.2016,  21:39 Найти цитируемый пост)
если использую архетип, ожидаю, что заготовка будет более или менее вменяемой

Архетип нужен чтобы сгенерировать минимальный проект, а дальше ты уже сам его должен допилить до нужного тебе состояния. 

Просто main класс в манифесте это вещь не первой необходимости. Например те же ANT и Maven, не содержат main класс в манифесте, а запускаются shell скриптом.

Автор: lazycat 7.12.2016, 19:29
Действительно, это уже становится претензией типа "как мед так и ложка". Никто не мешает добавить тег в pom.
К тому же большую часть времени на этапе разработки запускать из архива, как правило не приходится, достаточно иметь скомпиленные классы.

Спасибо большое за участие!

P.S. Поскольку тему создавал не я, не мне ее и помечать как закрытую. Пусть автор решает, все ли ему понятно.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)