Одной из наиболее распространенных и раздражающих проблем, с которыми я сталкиваюсь в Maven, является сбой / прохождение процесса сборки в зависимости от того, кто, когда и на каком компьютере выполняет процесс.
Более формально - в идеалеworld Я ожидаю, что процесс сборки будет повторяться.Как программист, я бы сказал, что я ожидаю, что процесс сборки будет похож на чистую функцию исходного кода и ресурсов, являющихся входными данными для сборки и "средой" - я ожидал бы, что он будет возвращать тот же результат в любое время ивезде, где я «оцениваю» его, используя «фиксированную среду», и я ожидаю (скорее, желаю), чтобы все в команде имели одинаковую «фиксированную среду».
В реальном мире любая «среда»"меняется со временем или изменяется между машинами разработчика, возможно, потому что он включает в себя некоторые зависимости, которые никто не ожидает и не осознает.
Чего я пытаюсь добиться, задавая этот вопрос, так это нахождение / определение алгоритма / процедуры или проверкисписок для устранения неисправностей, которые невозможно повторить. Процессы сборки Maven. Предположим, у нас есть две отдельные машины A и B с одной и той же ОС, и что мы собираем на них одну и ту же версию нашего приложения, но они дают разные результаты (например, одинуспешно, и один не удается).Где / как следует искать различия между этими двумя «средами».
Вот некоторые шаги, которые я обычно использую:
- сравните эффективные POM, полученные с помощью
mvn help:effective-pom
- сравнивать исполняемые версии mvn + другие задействованные инструменты (например, jdk)
- сравнивать настройки среды (полученные под Windows с помощью команды
set
командной строки) - сравнивать
settings.xml
файлы из дома пользователякаталоги - сравнить пути к классам, созданные с помощью
mvn dependency:build-classpath
- удалить репозиторий или даже оба репозитория
Есть идеи, что еще может дать ценную информацию?Может быть, есть лучший способ, которого я просто скучаю ...