Предположим, у меня есть проект с открытым исходным кодом, который зависит от некоторой библиотеки, которая должна быть исправлена для устранения некоторых проблем. Как я делаю это? Мои идеи:
Одно хорошее решение состоит в том, чтобы создать отличный проект с исправленными источниками библиотеки и развернуть его на локальном / репозитории предприятия с - исправленный спецификатор. Но это не соответствовало бы для opensourced проекта, который предназначен, чтобы быть легко buildable любым, кто проверяет его источники. Или если я просто говорю "и также, прежде чем Вы разработаете мой проект, проверьте тот материал и выполните установку mvn".
Одним из хороших решений является создание отдельного проекта с исправленными источниками библиотек и развертывание его в локальном/предпринимательском репозитории с квалификатором -patched. Но это не подходит для проекта с открытым исходным кодом, который должен быть легко собираемым для любого, кто проверит его исходные тексты. Или мне следует просто сказать: "И еще, прежде чем вы соберете мой проект, пожалуйста, проверьте этот материал и запустите mvn install".
Это то, что я бы сделал (и фактически делаю) как для корпоративного проекта, так и для проекта с открытым исходным кодом. Получить исходники, поместить их под контроль версий в отдельный проект, внести исправления, пересобрать исправленную библиотеку (и включить эту информацию в версию, что-то вроде X.Y.Z-patched), развернуть ее в репозитории (можно использовать SVN для этого, а-ля Google Code1), объявить репозиторий в POM и обновить зависимость, чтобы она указывала на вашу исправленную версию.
При таком подходе вы можете сказать своим пользователям: посмотрите мой код и выполните mvn install
, и они просто получат исправленную версию без каких-либо дополнительных действий. IMHO это самый чистый способ (не приводит к ошибкам, не путает порядок путей классов, не увеличивает время сборки и т.д.).
1 Многие люди развертывают свой код в хостируемом репозитории subversion (как это сделать - в этом посте).
Хорошее решение - создать отдельный проект с исправленными исходными кодами библиотеки и развернуть его в локальном / корпоративном репозитории с квалификатором -patched. Но это не подходит для проекта с открытым исходным кодом, который должен быть легко построен любым, кто проверяет его исходный код. Или я должен просто сказать «а также, прежде чем строить мой проект, ознакомьтесь с этим и запустите mvn install».
Я согласен с этим и с ответом Паскаля. Некоторые дополнительные примечания:
dependency: unpack
на исходном артефакте, а затем объединить его с вашими скомпилированными классами, если вы не хотите перестраивать весь зависимый проект pom.xml
должен будет правильно представлять зависимости этой библиотеки