Как правильно импортировать зависимость Maven, которую я изменил и перестроил в существующий проект?

У меня есть зависимость от Maven, pulsar-log4j2-appender, которую я раздвоил и изменил исходный код, потому что в моем проекте возникали исключения.

После изменения исходного кода я запустил mavenpackageкоманда для создания банки и импортирования ее в мой проект (в Intellij:Project Structure | Modules | Dependencies | Add JARs or directories...).

Однако, когда я запускаю приложение, кажется, что оно не может найти эту зависимость, потому что приложение Pulsar, которое я объявил в моем файле log4j2.xml, не настраивается.

Правильно ли я импортирую JAR? Мне интересно, должен ли JAR находиться в пределахorg.apache.pulsarпространство имен для правильного импорта.

Например,

Вот как выглядит зависимость без изменений:

И вот как это выглядит, когда я сам модифицирую и строю:

1 ответ

Если вы изменяете код из проекта с открытым исходным кодом, вы должны изменить как groupId, так и идентификатор артефакта. Если вы этого не сделаете, у вас возникнут проблемы, и будущие разработчики будут называть ваше имя так, как вы не хотите слышать.

Их изменение необходимо, чтобы Maven знал, что нужно использовать вашу версию вместо общедоступной. Кроме того, когда люди смотрят на ваш проект и видят groupId и artifactId из "настоящего" проекта, они, естественно, предполагают, что это то, что используется (вот почему они проклянут вас, если это не так). Кроме того, вам придется сделать что-то запутанное, чтобы Maven надежно использовал вашу зависимость.

Практика, которой я придерживался, - это добавить "com.mycorp", где mycorp - это имя моего работодателя, к groupId и добавить mycorp в artifactId. Единственным недостатком этого является то, что вы должны убедиться, что координаты "реального" артефакта не упоминаются как зависимость или транзитивная зависимость, иначе у вас будут дублирующиеся классы на пути к классам.

Наконец, лучше всего создать запрос на перенос для Apache Pulsar с вашим исправлением, чтобы другие люди, сталкивающиеся с той же проблемой, что и вы, могли воспользоваться этим.

Другие вопросы по тегам