Системы сборки для Java - Ant, Maven и Gradle
ฝัง
- เผยแพร่เมื่อ 13 ก.ค. 2024
- Что такое системы сборки для Java , что они в себя включают, и какие преимущества каждой из них?
Курс о котором идет речь в видео: Обучение на проекте - bit.ly/31UvGO7
Курсы для новичков:
JAVA - bit.ly/3oD4jlr
JAVA Start - bit.ly/2JveQPB
Инструментарий JAVA - bit.ly/326YqDs
C#/.NET - bit.ly/35K8GlV
C# START - bit.ly/3jRRdgm
PYTHON - bit.ly/2UhlXgE
ANDROID С НУЛЯ - bit.ly/37Ov4xd
Automation QA (Java) - bit.ly/37O5R69
FRONT-END - bit.ly/35K8XVZ
UI/UX дизайна - bit.ly/3e5YfwZ
WordPress Developer - bit.ly/35NFMS7
SALESFORCE Developer - bit.ly/3kGfl78
Продвинутые курсы для состоявшихся девелоперов:
GRASP and GoF Design patterns - bit.ly/35JahbU
Enterprise patterns - bit.ly/3kG67rl
Сайт Foxminded: bit.ly/3ebMsgv
Foxminded в ФБ: / foxmindedco
FoxmindEd в Instagram: / foxminded.ua
Мой Telegram: t.me/nemchinskiyOnBusiness
Мой блог: www.nemchinsky.me
Для деловых запросов: youtube@foxminded.com.ua
00:00 - вступление Сергея Немчинского
01:35 - что такое система сборки
04:43 - утилита make
06:40 - apache ant
09:52 - apache maven
11:01 - gradle
12:00 - что изучать
12:42 - реклама
13:40 - что включает в себя система сборки
15:05 - преимущества использования систем сборок
16:22 - итог
#sergeynemchinskiy #программированиенаjava #ityoutubersru
Давно ждал ролика про системы сборки. Большое спасибо)
Сергей, я давно и с большим удовольствием смотрю ваш канал, но не могу с вами согласиться по поводу gradle. Здесь не все так однозначно.
Это не просто "Maven с JSON-конфигом". Там вообще не JSON, а dsl на основе groovy (в современных версиях еще и kotlin script поддерживается). И ключевое отличие от xml в том, что groovy - это императивный язык. В рамках gradle таски вы можете писать циклы, условия, читать файлы и.т.д.
Также gradle поддерживает инкрементальную сборку. Это значит, что при билде будут компилироваться только те классы, которые изменились, а не весь проект целиком.
Более того, gradle это не только сборщик для Java. Конечно, чаще всего он используется именно так. Однако он обладает очень гибкой системой плагинов. С помощью gradle можно собирать проекты на C++, например.
Ну и самое главное - это жизненный цикл gradle. Maven хорош, когда у вас "типовой" проект без каких-либо изысков. Если же вы хотите встроиться в lifecycle, здесь это не так просто. Конечно, есть куча плагинов и для maven в том числе, однако разобраться потом в этой огромной build секции не очень-то просто. Gradle строит граф, в котором можно удалять ноды и добавлять новые. Например, если я хочу, чтобы моя кастомная таска выполнялась перед тестами, достаточно написать: test.dependsOn myTask. Аналогично, если мне нужно разделить тесты на юнит и интеграционные и выполнять их два этапа, это также легко реализуемо.
Поддерживаю. Ожидал в видео увидеть интересную информацию о Gradle, но про то, как он функционирует и чем отличается не сказано по-сути ни слова, если не считать одну минуту недовольства этой системой сборки)
Только в pom.xml ты практически никогда не лезешь и разбираться в build секции почти никогда не нужно. Ну а слово "изыски" частенько имеет значение "изъебы", без которых как бы иногда можно обойтись.
Не хочу наезжать на Gradle. Он крутой и все такое. Просто сборка проекта - это редко модифицируемая вещь. Обычно просто добавляются зависимости и выполняется mvn clean package -P с нужными профилями.
Что вы от ретрограда ожидаете?
Мавэн тоже далеко не только для Java. Ещё и для Шарп
Совсем недавно перешел на Java c .NET, пробовал разобраться с Maven - переплевался. Знакомый Java developer посоветовал Gradle, с ним вообще проблем не возникло. Как мнение новичка в мире Java - с Gradle гораздо проще начать работать
I don't understand Russian and had to watch it using translated subtitles and this video still did a better job at explaining than many other videos on the topic.
who cares
Сергей спасибо за ролик, лайк поставил , комментарий написал, на курс приходил , учился. Поддержал всем чем мог :)
Очень приятно Вас слушать,огромная благодарность.
Ну зря ты так про грейдл, это не джсон, это груви ДСЛ, там можно код писать... гораздо круче и гибче чем мавен
Классный подход - не подготовившись, выпускать ролик. Это как про UI на Java, в котором AWT назывался AWG на протяжении всего видео.
Только теперь пострадал Gradle - это Maven, только с JSON-конфигом. Что дальше? Spring Foot?
Это хобби такое у человека.
Я сюда вообще поржать захожу))
Посмотрел в своё время несколько видео, вроде интересные вещи рассказывает. Пока не дошёл до тех тем, в которых сам шарю, и в которых реально есть опыт. Видео про Котлин, JS и .Net ну просто чушь собачий. (Я на тот момент делал проект на Асп.Нете с реактом параллельно с переписыванием проекта на андроиде на Котлин, чтобы знать, что всё с точностью, да наоборот).
Без камня в чей-либо огород, просто так и есть, если коротко. Мнение строится не на основании фактов и опыта, а на основании тезисов, часть которых устарела лет 8 назад, часть из которых просто взята, видимо из головы.
Больше всего орнул, когда в одном видео говорил, что null-safety в Котлине не нужен, потому что так говорил дядя Боб, можно ведь всё покрыть тестами. В другом 20 минут расписывал, почему не нужно возвращать нулл, и сколько в Джаве из-за этого проблем)
Ещё в каком-то рассказывал, что важна строгая типизация. Что null-safety, это частный случай строгой типизации, или, вернее, её отсутствие в джаве для нуллов, сложить 2 и 2 в уме не получилось. Получаем биполярочку)
Про Андроид ещё круто было. Если вы не любите рисовать в фотошопе, лучше выберите энтерпрайз джаву, потому что рано или поздно заставят. Всё равно, что сказать, что Андроид может МП3хи воспроизводить, поэтому в любой момент придётся учить ноты и звукорежиссуру)
Вот и думаю, про собеседования и найм кадров вроде дельные вещи говорит, а почти уверен, что покажи это видео реальному проджект-менеджеру/кадровику/скрам-мастеру, почти уверен, что он так же мне скажет, что не имеет ничего общего с реальностью.
Про работу на легаси-проектах и ПХП, в принципе, верно, на мой взгляд. Но это, видимо, сломанные часы дважды в день верно время показывают)
@@liamsmith7052 Ну да, с такой логикой и java backend разработчика могут заставить рисовать в фотошопе, ведь у этого бэкэнда есть фронтэнд, а на фронтэнде есть кнопочки, а значит их нужно рисовать, а значит заставят делать это именно backend разработчика.
@@liamsmith7052 парадокс заключается в том, что знающиий человек не рассказывает, а незнающий рассказывает.
Спасибо за полную информацию и историю. Стало более понятным зачем и для чего нужно. Учусь на втором семестре в Берлине на прикладной информатике и лабораторную по алгоритмам и структурам данных необходимо писать используя gradle для java. Но забыли объяснить зачем он нужен).
Спасибо большое
Спасибо за ваши видео
Привет. Идея для видео (новичковые вопросы): может посмотрите всякие разные вакансии и объясните что означает каждый пункт.
Спасибо большое за видео.
Ну замечательное видео получилось
Я надеюсь,это по прежнему Сергей Немчинский?Я могу выдохнуть и спокойно посмотреть ролик?))
Если для сборки проекта изпользуется Gradle, то конфигурация проекта пишется на DSL языках: Groovy или Kotlin, а не с помощью JSON.
Классно интересно
Спасибо. Круто.
Gradle build scripts are written using a Groovy or Kotlin DSL. Деда, какой JSON? Ant и Maven это как Imperative и Declarative подходы. И SAP HYBRIS все еще собирается на Ant)
Не знал, что с ant'ом столько боли! Спасибо.
Спасибо, за выпуск! Ждемс кнопку......( Я уже бутылочку виски купил.....
Вооо
Хоть все понятно стало откуда что пошло и зачем вообще эти мейвены))
кто и когда сказал Сергею, что мы любим, как от Адама и Евы?))
шучу, на самом деле любим
где бы почитать про производственные циклы приложений? Про стадии от ТЗ заказчика до production'a?
Gradle = json ? Сергей, да вы прям новый континент открыли. :D
так не было же кнопочки собраться тогда и ide тоже особо не было? программировали в vim и emacs.
а собирали код командой make (одна из них)
Gradle и Maven объединяет только возможность использование пакетного менеджера, а так у них разные подходы. первый использует декларативный, а второй - императивный. Для декларативного подхода и используется своеобразный язык программирования Groovy и он гибче и легче в плане написания супротив императивного, где тебе самому требуется высчитывать и написать подробности сборки
Теперь я понимаю что такое gradle в androidStudio, спасибо, за рекламу like)
Переход в чёрно-белый прикольно)
Gradle рулит. Файлы сборки пишутся или на Groovy или на Kotlin DSL.
Здравствуйте! Сейчас стою на этапе выбора высшего учебного заведения, очень интересует андроид разработка, а также нейронки. Я понимаю, что существуют курсы и самообучение, но куда-то да поступать то надо) Какие вузы с высоким уровнем преподавания на одной из вышеперечисленных специальностях вы бы могли посоветовать в Украине, или за границей ?
th-cam.com/video/rSQsU_nxtKw/w-d-xo.html
Мне кажется, или вначале ролика путаются понятия "система сборки" и "пакетный менеджер"? Ведь система сборки она нужна именно для сборки приложения, а не для дистрибьюции. То есть даже если приложение будет запускаться на той же машине, на которой и разрабатывалось.
И да, системы сборки нужны были и тогда, когда машины были большими и разрабатывали через удаленные терминалы. Просто они были проще, так как сами приложения были меньше и проще. В простейшем случае система сборки - это просто скрипт. В вырожденном случаей - этот скрипт состоит из одной команды: запуск компилятора на один compilation unit.
Build & Run в IDE - это запуск системы сборки в любом случае. (либо внешней либо встроенной в IDE)
Здравствуйте, про Vaadin расскажите пожалуйста
Не согласен по поводу Gradle. По мне - удобнее, чем Maven, читабильнее, менее геморройный. И сейчас вообще тенденция собирать на Gradle. Поэтому, я бы советовал главным образом изучать Maven и Gradle. А про Ant иметь в виду, что такое есть. Я все новые проекты делаю на Gradle, и это не Android-разработка. Тот же Liferay переехал на Gradle. Да и много кто. Поэтому, всё хорошо, но, мне кажется, немножечко не объективно.
"менее геморройный" - ахахахаха
Пов-собираешь .jar файл с дополнениями на Gradle(Kotlin)
Сергей, пожалуйста, расскажите об Apache Camel
Сергей, вы видимо не работали или очень давно работали с gradle.
Недели две назад, когда у меня был опыт только с maven, то я бы с вами согласился, но сейчас я сам освоил gradle по его доке и гуглу, и за две недели перевёл наш Java продакшен проект на gradle. Так вот - gradle это не "Maven с JSON-конфигом", а намного-намного больше. Нужно отдельное видео про него.
привет, скинь ссылке по каким изучал gradle. спасибо
Я Ant использую для сборки JavaScript проекта, уже давно. Изначально на нем конфиг написал, потом он разросся, а сейчас лень переписывать на Gulp или Webpack.
И Make тоже использую, в проекте на сях.
И Gradle тоже, приложения под Андроид билдю.
8:18 Становится муравейником :D
да, мавен нужно изучать вначале, градл уже после, все равно использует ту же репу и переписанные плагины, на ант сейчас уже можно забить
Сергей. Вам очень идет зеленый)
Сергей, Вы виноваты в том, что я из-за Вас полюбил Java и сейчас упорно в этом разбираюсь и пишу различные интересные проекты!
Сергей, стоит ли изучать java или c++ для веба или десктопа после php? При этом не хотелось бы бросать первый язык.
Попробуйте и то, и другое, полистайте информацию, какие задачи сейчас на этих языках решают и поймите для себя, с чем больше хочется работать. К сожалению, прямо глубоко придется что-то одно выбрать, хотя если по пути масс-маркета или фриланса хотите идти, то можно вполне php и java совмещать
Сергей, когда вы уже будете саморазвиваться. А то всё Сергей Немчинский уже сколько лет...
что ты имеешь ввиду?
@@podsvinokSatani Это такая "шутка". Что со временем Сергей Немчинский должен стать например, Виктором Гагенским
2:33 орнул)
Неоднозначный ролик вышел. Как новичку, видео оказалось познавательным, ответилот на интересующие вопросы. Но судя по комментариям, не все так просто и радужно. Градл - не мавен, а что то намного проще и лучше. И эти противоречивые данные просто разрывают юную голова новообращённого программиста
не сказал бы, что грейдл проще мейвена
Gradle в формате json? Ниче, шо там вполне нормальный такой Groovy для скриптов используется?
И где про sbt?
Использовать sbt для сборки Java приложений - это извращение.
@@java-software-engineer Мы не ищем легких путей(с)
Я когда-то билд Flex/AIR аппликухи построил на sbt, потому как надо было под виндой собирать бандл под макось, а ни Ант, ни Мейвен не мог дать мне нужных возможностей. Грейдл тогда еще сильно сырой был.
Когда уже имя фамилию поменяешь, Сергей Немчинский? )
А на вашем сайте контакт в скайпе не актуален? Никто там не отвечает...
Добрый день! Вам ответили?
@@alexandrapersukova Да, в Телеграме)
А что, Сергей уже не программист с большим стажем?
Здравствуйте, Сергей!
Назрел такой вопрос, он уже заезженный 1000 раз но все же, опираясь на весь ваш опыт в ит и разработке в целом, учитывая ситуацию на рынке и популярность яп на данный момент, какой яп Вы бы выбрали (без предвзятости) чтобы войти в ит, так сказать и почему?
Заранее большое спасибо!
Добрый день!
Сергей ранее записывал видео: "Как узнать какой язык программирования тебе подходит?",
"Как определить какое из направлений разработки тебе ближе?", "Почему бессмысленны советы какой язык программирования выбирать в 2020 году?", возможно они помогут вам определиться.
@@alexandrapersukova Спасибо большое:)
А Google Bazel?
Когда МАШИНЫ БЫЛИ БОЛЬШИМИ , был язык управления заданиями !!! , ну конечно , не MAKE , не BASH и не MAVEN ... но, иден те же самые ПРОГРЕСС , ОДНАКО ;))
В xml угловые скобки, а не квадратные
Где овальная лисичка?
"если вы энтерпрайз разработчик нужно изучать Maven, вариантов нет"... оборжаться.
то ощущение, когда застал ант)
АндроидСтудио весит целый гигабайт а сам собрать проект не может, вечно чтото качает. То Gradle, то sdk и патчи. Чем вообще студия занимается , синтаксис подчеркивает?
Не пытайся заставить двух муравьёв нести одну веточку...
Сергей удивительный мужик, в целом рассказывает вроде бы верно, прям уж очень сильно не докопаться, но начни только чуть больше к его словам прислушиваться и оспорить или дополнить можно каждое) ну наверное Сергей для дураков свое видео пилит, так сказать какую-то кость кинул, а там дальше сами разбирайтесь) Ну и как обычно специфичный взгляд на ряд вопросов) а в остальном конечно забавно рассказывает👍
зато у тебя всё гладко, ничего конкретного не сказал, не прикопаешься даже)
@@Das.Kleine.Krokodil ну как я и сказал, Сергея от адама и евы, конечно, прикольно слушать, но как минимум говорить, что грейдл базирующийся на груви/котлине это джисон с какими-то там другими скобками ну как-то смешно. Ну и как-то по факту кроме воды и исторической интереснейшей справки, что было в этом видео? Прозвучало ли какое-то объективное сравнение систем, едва ли..
@@klxqz про градл тут уже много написали. Ты то другое сказал, что оспорит или дополнить. Мне как новичку видео было полезно. Как оно там в теме сборки
gradle конфиг файл не json ниразу, gradle в отличие от maven поддерживает параллельные процессы сборки...
кто-то на самом деле изучает язык его сборщики и фреймворки основываясь на вакансиях?
Моим работодателям, на то время, наверно было очень нужно иметь отдельного сотрудника, который только сопровождает муравья в его нелёгком пути домой.
Запустил я тут Android Studio на macbook air. Боже... мой это какое то ДНО!!! донное. 2 часа оно что-то качало (при моих 500 мегабит интернета) Забило мне весь диск. Мин 30 билдился этот Gradle. Потом я передумал нажал стоп.. оно делало завершение мин 15. Написал таки 15 строк вывести drawRect... билжу, бедный проц рыгает, оно билдит и билдит... 25-35 мин билдило и запустило эмулятор 😣 тут ему стало вообще плохо. этот квадратик с 1fps ( я прописал в mouse move что бы он двигался) ------- ВЫ КАК ВООБЩЕ АНДРОИДЕРЫ РАБОТАЕТЕ???????? это же пиздц извините. Там компьютер от NASA нужен? Тьфу... еще больше полюбил ios. Это ж какой глубины Жопыыы надо обаладть что бы написать такой тормозной продукт (это я с притензией к гугл). У меня все что от гугла и java вечно рыгает даже на моем i7 настольном с 64 гига оперативки. (Сорри за эмоции но это днооооооооооооооо) Мне просто жалко Jetbrains им постоянно создают новые баги на тормознутость. Мечтаю о том дне когда они перепишут все это на c++, например хоть на QT
Причем тут вообще gradle и json ? Ролик показывает полную некомпетентность автора в тех технологиях, с которыми он не работал.
Я не понимаю, зачем это все? Зачем этот гемор с разными сборщиками. Почему нельзя иметь один сборщик от вендора? XML, JSON или DSL самопровозглашенный, мне как программисту вообще посрать как он собирает, главное чтобы код работал. Не занимайтесь ерундой
это опенсорс чувак, сборщик от вендора - это тивоизация
поэтому вендор выпускает только виртуальную машину и стандартную библиотеку. А все остальное пишет сообщество и побеждает самая удобная софтина.