LINUX.ORG.RU

Как добавить архетип maven в Intelij IDEA

 , ,


0

1

Я учу Spring и пытался создать проект maven в Community версии. Не нашёл нужный архетип (webapp). И пытался добавить архетип, но он не добавлялся. Проделал операцию 2-3 раза ничего не получилось. Помогите пж


Архетип это из терминологии Maven, я так понимаю это шаблоны проектов, ну так создай проект как показано в документации Maven: вводи команды в терминале, проверь созданный проект, убедись что нет ошибок при сборки mvn clean install и затем открой его в Idea.
Если у тебя поставлен plugin Maven в Idea, то может сама настроить конфигурацию по pom.xml.
Все манипуляции проводишь в pom.xml, например добавляешь в pom.xml артефакт (зависимость), если после этого библиотека сама не загрузилась то жмешь в правой панели Maven кнопку Reload All Maven projects. Если не загрузилась опять то читаешь текст ошибки, анализируешь что там сказано и решаешь проблему.

anonymous
()

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

А по поводу архетипа: его можно добавить руками, взяв образец с мавен-централа.

Zhbert ★★★★★
()
Ответ на: комментарий от Zhbert

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

Будет. Индексирует любой classpath. Ultimate никогда не ставил, использовал Community даже когда работал на банк на галере среди пользователей Ultimate.

Я заметил что community только не полный рефакторинг спринга, т.е. что-нибудь переименуешь в аннотациях или xml и это не подхватится автоматом по проекту, но это важно только людям которые полностью доверяют автоматическому рефакторингу, а люди с шапочками из фольги проверяют все сами и никому на слово не верят. Это ограничение автоматического рефакторинга не касается кода на Java, только то что требует препроцессинг.

Ну и всякая мелочь типа нет поддержки FreeMarker темплейтов, но зато HTML работает отлично и поэтому никаких проблем с использованием thymeleaf. А если в фирме захотят чтоб я правил FreeMarker или Velocity темплейты то пусть они мне оплатят Ultimate.

anonymous
()
Ответ на: комментарий от Zhbert

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

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

но вот всякие продвинутые фишки код-анализа (вроде навигации по стринговым плейсхолдерам) работать не должны

Ну я про них и говорил.

Zhbert ★★★★★
()

Зачем тебе архетип, чувак)

Если у тебя какой-то лютый кастом, то берешь заготовку помника вот отсюда и дальше сам вписываешь, что тебе нужно

А если тебе нужен спринг, то идешь на https://start.spring.io/ и там генеришь себе новый проект под свои нужды

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

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

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

Вот тут удваиваю. Как-то пытался сделать архетипом проект, в итоге плюнул.

Zhbert ★★★★★
()
Ответ на: комментарий от Zhbert

Кажется, при текущем положении вещей джава стала такой сложной, что без код-анализа ее лучше не трогать))

Слава героям, которые умудряются программировать джаву в виме. Такие люди реально существуют и очень страдают

Зачем они это делают, впрочем, неясно. Если нет денег на Алтимейт, то Эклипс со спринговым плагином никто не отменял

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

Слава героям, которые умудряются программировать джаву в виме. Такие люди реально существуют и очень страдают

Я не пробовал. После ИДЕИ с ее фишками по рефакторингу и вообще анализу в целом, я даже пробовать не хочу что-то там руками писать в блокноте, это изврат.

Zhbert ★★★★★
()
Ответ на: комментарий от stevejobs

Зачем они это делают, впрочем, неясно. Если нет денег на Алтимейт, то Эклипс со спринговым плагином никто не отменял

Ну есть определенная доля фанатично упертых, которые либо просто все делают в виме, либо считают, что «нужно понимать код» и пишут все руками. Последнее, учитывая многословность джавы, вообще треш, угар и содомия, ИМХО.

Zhbert ★★★★★
()
Ответ на: комментарий от Zhbert

Буквально за месяцы до ковида общался с текущим мантейнером Мавена. Он неплохой чувак, но очень упертый относительно лучших практик ынтерпрайза двадцатилетней давности. На все вопросы о том, какого хрена всё такое отсталое и почему бы не скопипастить фичи того же npm, он отвечает как типичный лоровец: #ненужно, совсем уже вы там охренели, не можете в помник руками XML тэги дописывать, какие-то команды в командной строке хотите!

можно элементарно форкнуть мавен и добавить всё нужное, но кто об этом форке узнает?

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

#ненужно, совсем уже вы там охренели, не можете в помник руками XML тэги дописывать, какие-то команды в командной строке хотите!

Ты сейчас про некий аналог артисана для ларавеля говоришь? Чтобы не руками править конфиг, а просто командой? ИМХО, не вижу ничего такого в том, чтобы добавить зависимость в ХМЛ, не так уж это запарно…

Zhbert ★★★★★
()
Ответ на: комментарий от MOPKOBKA

Ну я уверен это все рофлы, существуют ли такие люди в действительности, это вопрос.

Ну не факт. Тут шизиков полно =)

Zhbert ★★★★★
()
Ответ на: комментарий от MOPKOBKA

А ты их вживую видел?

да.

например, это джаваскрипт-разработчики, которым временами нужно пердолить на сервере не только Ноду, но еще и джаву (микросервисы на разном бывают написаны)

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

я своими глазами видел, как суперсиньёрный жс-разработчик из Гугла по SSH уныло пытался wget-ом скачать мавен и потом в терминале и виме создавал структуру проекта для вебаппа. Было очень горько за джаву. И причём, ничем не поможешь же тут.

stevejobs ★★★★☆
()
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от Zhbert

ИМХО, не вижу ничего такого в том, чтобы добавить зависимость в ХМЛ, не так уж это запарно…

ну например, мне иногда нужно генерировать проекты, чтобы собирать кастомные сборки

иногда мне нужно делать новые проекты из командной строки, например всякие микросервисы-однострочники, которые берут на вход HTTP GET ?q=, процессят параметр одной строчкой и отдают ниже по пайплайну

какая-то элементарная команда вроде «mvnx add spring latest» у меня написана уже, конечно. Тупо парсю XML, втыкаю куда надо, всё вы таком духе.

или например, «mvnx upgrade all latest-stable»

или например, динамические версии корневого проекта, в зависимости от переменных окружения (у меня это сделано экстеншеном, когда-то скопипащенным у… атлассиана?)

Вопрос в том, что это мог бы сделать и основной проект Мавена. Я даже предлагал влить этот код им. Только вот от идеи команды для апгрейда версий мантейнеры пришли в ужас. Типа, поощряет плохие практики, версии нужно хорошо обдумывать головой и сложность изменения - это хорошо, а не нравится - валите в этот ваш джаваскрипт, а у нас тут есть свой бог - Ынтерпрайз

Услышав эти слова, Заратустра поклонился святому и сказал: «Что мог бы я дать вам! Позвольте мне скорее уйти, чтобы чего-нибудь я не взял у вас!»

Так разошлись они в разные стороны, старец и человек, и каждый смеялся, как смеются дети.

Но когда Заратустра остался один, говорил он так в сердце своем: «Возможно ли это! Этот святой старец в своем лесу еще не слыхал о том, что Бог мертв».

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

например, это джаваскрипт-разработчики

Так нечестно))

MOPKOBKA ★★★★★
()
Ответ на: комментарий от stevejobs

Я вот нынче helidon se пробую. И ты знаешь - офигенная штука. Вообще никакой магии, обычная жава. Вот мой main:

    public static void main(String[] args) {
        LogConfig.configureRuntime();
        log = Logger.getLogger(Main.class.getName());

        var config = Config.create();
        var appConfig = config.get("app");
        var serverConfig = config.get("server");

        var routing = Routing.builder()
                .register("/sync", new SyncService(appConfig))
                .build();

        var webServer = WebServer.builder(routing)
                .config(serverConfig)
                .build();

        webServer.start()
                .thenAccept(ws -> {
                    log.info("Web server is available at http://127.0.0.1:" + ws.port() + "/");
                    getRuntime().addShutdownHook(new Thread(() -> ws.shutdown().await()));
                })
                .exceptionallyAccept(e -> {
                    log.log(SEVERE, "Web server startup failed", e);
                });
    }

Вот мой хэндлер (кусок)


    @Override
    public void update(Routing.Rules rules) {
        rules.post("/{endpoint}/{service}", this::postHandler);
    }

    private void postHandler(ServerRequest request, ServerResponse response) {
        request.headers().contentType().ifPresent(contentType -> {
            if (!contentType.equals(APPLICATION_XML)) {
                throw new HttpException("Unsupported Media Type", UNSUPPORTED_MEDIA_TYPE_415);
            }
        });

        String endpoint = request.path().param("endpoint");
        String service = request.path().param("service");

        EndpointData endpointData = appConfig.get("endpoint." + endpoint).as(EndpointData::fromConfig).orElseThrow(() ->
                new HttpException("endpoint", BAD_REQUEST_400));
        ServiceData serviceData = appConfig.get("service." + service).as(ServiceData::fromConfig).orElseThrow(() ->
                new HttpException("service", BAD_REQUEST_400));

        request.content().as(byte[].class)
                .onError(response::send)
                .flatMapSingle(body -> processRequest(endpointData, serviceData, body))
                .forSingle(responseBody -> {
                    response.headers().contentType(APPLICATION_XML);
                    response.send(responseBody);
                });
    }

Один минус - асинхронное дерьмо. Но с этим ещё долго жить. Впрочем в спринг его тоже умудряются протащить. В остальном только плюсы. Стартует моментально. Память жрёт умеренно, в JVM режиме пустой сервер я запустил на -Xmx6m. В теории компилируется граалем. Под капотом netty, то бишь работает настолько быстро, насколько только возможно. Сам проект самый, что ни на есть, обычный и скучный мавен. Там какие-то плагины есть, но что они делают, я до сих пор не понимаю, по-моему ничего не делают. Единственное - я не по их quickstart-у делал, а ручками, но это мелочи.

Мне пока очень даже нравится. Все строительные блоки есть. Да, там где у спринга будет аннотация, тут я руками две строчки напишу, но мне это больше по душе.

Тут даже модули прописаны у всех библиотек. Я впечатлился и в своё приложение тоже module-info.java добавил, прикольно, никогда так не делал.

Legioner ★★★★★
()
Последнее исправление: Legioner (всего исправлений: 3)
Ответ на: комментарий от Danial

Есть ещё Netbeans - она получше Eclipse работает с Maven.

iZEN ★★★★★
()
Ответ на: комментарий от stevejobs

Стиви, ты там живой? Уже неделю тишина и чота вот подумалось мне о твоем нике. Типа давно не мелькал.

anonymous
()
Ответ на: комментарий от anonymous

Привет!

Неделю тишина? Я на ЛОРе уже несколько лет не бывал, отвечаю только если кто-то бросает ссылку))

К сожалению, ответить @Legioner мне пока особо нечего. Я смотрел на Хелидон, хорошая штука.

Но кажется, сейчас основная битва между spring boot (VMWare), micronaut (Oracle) и quarkus (IBM). Надеюсь, что расставил компании в скобочках правильно, я сегодня в неадеквате )).

Хелидон это собственный ответ Оракла, но он (пока?) не собрал такой серьезной юзербазы, как конкуренты. А еще есть JakartaEE и MicroProfile с их коллективом ex-oracle чуваков. Со статусом Джакарты вообще ничего не понятно, скорей всего они вообще не везут. Микропрофайл вроде жив.

stevejobs ★★★★☆
()
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от stevejobs

Абсолютно с ними согласен, это ужасные практики. Версии в pom менять нужно осознанно, после прочтения release notes. Бездумный апдейт версий может сломать тебе приложение в самых неожиданных местах.

Для генерирования новых проектов есть отдельные тулы.

Про динамические версии вообще не понял.

Зачем все эти фичи в майвене – не представляю. хорошо что ментейнеры там разумные люди.

Xunnu ★★
()

Фиг знает что за архетипы. Ты хоть бы ошибку написал.

А вообще вот, держи: https://start.spring.io/

Xunnu ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.