Pull to refresh

Comments 7

Вы знаете, есть и еще один вариант. Вместо менеджера репозиториев может быть сам репозиторий. Если вы поставляете продукт, репозиторий в виде папок с файлами вполне может иметь место. Главное — научиться его автоматически собирать. В таком виде поставляется например Apache Karaf.


Если вам нужны воспроизводимые сборки

Ну и так, мелкое замечание — не всегда это тоже хорошо. Скажем, у вас в зависимостях была некая уязвимая для атаки штуковина (широко известен пример с commons collections). Если через много лет кто-то решит собрать ваш проект, далеко не очевидно, что нужно воспроизводить вашу уязвимую для атаки сборку. Может быть лучше упасть. Но я боюсь, что это уже за пределами возможностей отдельно взятого мавена.

Если вы поставляете продукт, репозиторий в виде папок с файлами вполне может иметь место.

Вместе с исходниками поставлять ещё репозиторий, в котором лежат собранные джарки?

Где вы видите слово исходники? Я говорю про собранный продукт, типа условной Вебсферы. В котором обычно куча jar-ов, лежащих иногда там и тут в папках lib. Вот вместо них я бы поставлял репозиторий, по структуре соответствующий maven local.

Где вы видите слово исходники?

Не вижу, подумал про исходники потому что статья в основном про них :).

Блог пост на сайте компании, фаундеры которой это безобразие и придумали — это, конечно, прекрасно. Но, как говорится, слишком мало, и слишком поздно. Дебильная система Мавена прямо таки толкает вас прописывать репозитории в pom.xml. Например, как вообще можно поменять settings.xml на облачном сервере CI, где у вас не доступа к инфраструктуре?
Вот вам 2 полезных добавления к статье (@poxvuibr можешь их дописать как P.S. если хочешь):


  1. Пользуйтесь вычищением репозиториев из pom.xml в Artifactory. Если кто-то в команде таки поленился сделать правильно, и наговнякал, билд на CI упадёт, так как из pom.xml будут удалены репозитории.


  2. По крайней мере на CI сервере (а лучше везде) пользуйтесь Maven Wrapper-ом. В файле maven-wrapper.properties вы можете прописать distributionUrl к произвольному дистрибутиву Мавена и это дает вам возможность скачивать из Artifactory дистибутив, в котором уже будет лежать правильный settings.xml с правильными репозиториями и использовать только его. Никто не запретит, опять же, разработчикам поставить Мавен из коробки и нафигачить любых репозиториев в settings.xml и pom.xml, но если ваш CI пользуется wrapper-ом, который скачивает дистрибутив с правильными репозиториями, ваша сборка будет проходить правильно, и падать, если что не так.
Например, как вообще можно поменять settings.xml на облачном сервере CI, где у вас не доступа к инфраструктуре?


Закомитить settings.xml в проект и указать его через параметр майвена --settings?

Да, репозитории в помах это еще та чехарда — при большом количестве проектов и длинной истории могут создавать вполне реальные проблемы. Я для себя со временем пришел к такому решению — на рабочий комп ставится sonatype nexus (maven repository), a settings.xml содержит единственную запись:


    <mirrors>
        <mirror>
            <!--This sends everything else to /public -->
            <id>lnexus</id>
            <mirrorOf>*</mirrorOf>
            <url>http://localhost:8081/repository/public</url>
        </mirror>
    </mirrors>

Сначала о недостатках — репозиторий отбирает часть ресурсов у компа, особенно место на диске. Но это достаточно просто нивелируется железом. Достаточно сказать, что я полгода не замечал фоновый WebSphere Full Profile + Liferay + Application (забыл выключить после смены проекта), чтобы понять, что этот недостаток не так существеннен.


Теперь о достоинствах:


  • весь роутинг — мои репозитории + OSS репозитории + проектовые репозитории управляются через nexus (Web UI), что гораздо удобнее чем руками в XML
  • мне не надо теперь иметь несколько settings.xml (для работы и для себя). Nexus автоматически отслеживает доступность репозиториев и автоматически их подключает.
  • оптимизация трафика — Nexus "умнее" общается с удалёнными репозиториями
  • локальный репозиторий (не nexus) со временем забивается мусором, но в моём случае это не важно — я легко могу его стереть — всё нужное моментально восстановится из nexus
Only those users with full accounts are able to leave comments. Log in, please.

Information

Founded
Location
Россия
Website
lanit.ru
Employees
over 10,000 employees
Registered
Representative
Ася