В чем разница между репозиторием maven и npm? - PullRequest
0 голосов
/ 12 декабря 2018

Я хочу знать разницу между npm и maven репозиторием

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

NPM ориентирован на JavaScript, а Maven - на Java и производные JVM (то есть Scala, Kotlin, Groovy).
Поэтому сравнивать их не имеет смысла, поскольку они не параллельны.
ХотяСравнение Maven с Gradle (одновременный мир Java) или NPM с Yarn (параллельный мир JavaScript) имеет больше смысла.

Теперь у Maven и NPM закрыты функции.Что неудивительно: хорошие рецепты распространяются за пределы языка.

Вот некоторые общие моменты / особенности:
- это менеджеры пакетов (термин JavaScript) / зависимостей (термин Maven), которые работают с локальными / удаленными репозиториями.
- это также способуправлять зависимостями в ваших проектах и ​​выполнять для них задачи сборки.

0 голосов
/ 12 декабря 2018

Один и тот же инструмент, другой язык?Maven - самый популярный инструмент для построения и разрешения зависимостей для Java, так же как и NPM для JS.Но это не просто один и тот же инструмент для другого языка.Очевидно, что между сборками Java и JS существуют огромные различия, и эти различия непосредственно видны при работе Maven.Например, в то время как многие инструменты JS полагаются на Git для выполнения некоторых тяжелых задач, Maven работает с пользовательскими репозиториями Maven на основе файловой системы, так как Maven предшествует Git и нуждается в обработке двоичных артефактов, которые исторически Git плохо обрабатывал.В Maven существует четкое разделение между источниками и двоичными файлами, хотя в мире JS они часто бывают одинаковыми.

Основы Maven Maven в чистом виде следует декларативной модели, где pom.xml (аналогичен package.json).) определяет различные свойства сборки, но не содержит скриптов.Недостатком является то, что может возникнуть проблема в точной настройке некоторых аспектов сборки без использования скриптов, поскольку вы должны полагаться на плагины.Преимущество в том, что легче понять другие сборки, просто взглянув на pom.xml, так как они обычно следуют тому же подходу без особых настроек.Gradle - это популярный инструмент на основе Groovy, созданный на основе стандартов и соглашений Maven. Он специально разработан для упрощения pom.xml и преодоления этого барьера без сценариев.

Ссылки на ваши зависимости Аналогично package.json,вы не работаете с pom.xml вашей зависимости напрямую, а определяете координаты зависимости и позволяете инструменту сборки обрабатывать все остальное.В Maven основной формой этих координат является GAV (groupId, artifactId, версия).

Плоское дерево зависимостей?Основываясь на комментариях в другом ответе, Maven предоставляет «плоское дерево зависимостей», а не «вложенное дерево зависимостей», которое NPM предоставляет по умолчанию.Maven не позволяет использовать несколько версий одной и той же зависимости.Если случается, что запрашиваются разные версии, Maven использует разрешение зависимостей , чтобы выбрать одну версию.Это означает, что иногда ваши переходные зависимости получат версию, отличную от требуемой, но есть способы справиться с этим.Однако это ограничение исходит от Java, а не от Maven, поскольку (как правило) в Java загрузчик классов будет предоставлять доступ только к определению одного класса, даже если в пути к классам найдено несколько определений.Поскольку Java не особенно хорошо справляется с этим, Maven пытается избежать этого сценария в первую очередь.

Примечание: начиная с npm v3, зависимости сглаживаются.Альтернативный менеджер пакетов пряжа также делает то же самое.

Зрелость Более того, Maven значительно старше NPM, имеет большую базу пользователей, огромное количество пользовательских плагинов и, возможно, до сих пор мог бытьсчитается более зрелым в целом.Иногда Maven используется не для Java или даже для проектов полиглотов, поскольку существуют плагины для работы с другими языками или конкретными средами, такими как Android.Существуют плагины, которые связывают Maven и другие инструменты сборки, такие как frontend-maven-plugin , который фактически обрабатывает несколько инструментов сборки JS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...