Как мне получить локальный пакет Maven для ввода его зависимостей?

#java #eclipse #maven

#java #eclipse #maven

Вопрос:

Я написал серию классов, которые хочу превратить в корпоративную библиотеку. Управлять всеми его зависимостями было непросто, поэтому я создал проект Maven, чтобы он обрабатывался автоматически.

Я упаковал свой проект библиотеки в .jar и добавил его в свой локальный репозиторий Maven. Теперь я могу перечислить его в моем проекте приложения pom.xml он вводится точно так же, как любая другая зависимость, и отлично работает.

Проблема в том, что зависимости моей библиотеки не вводятся. Кажется, что это должно быть просто, но попытка скопировать другие пакеты в репозиторий Maven не работает.

Прямо сейчас мой jar состоит из двух каталогов:

 comcompanypackageMain.class
  

И:

 META-INFmavencom.companypackagepom.xml
  

Куда мне нужно поместить pom.xml файл для Maven, чтобы получить зависимости моей зависимости? Есть ли что-то еще в .jar сборке, чего мне не хватает?

Комментарии:

1. Как модуль добавляется в другой проект? Если это сделано не через maven, а просто путем добавления jar, транзитивные зависимости добавляться не будут. Вам пришлось бы создать fat jar (jar-with-dependencies с использованием maven-assembly-plugin), но лучшим вариантом является преобразование всех проектов в maven.

2. Все проекты являются проектами Maven. Во всех случаях модули добавляются через pom.xml. Я не знаком с fat jars. Я изучу это.

3. В этом случае зависимости должны добавляться автоматически, если они не ограничены, как указано.

4. Fat jar — это не то, что я хочу. Это более или менее то, как я обрабатывал это изначально, и это было действительно грязно. Насколько я могу судить, я сопоставил то, как создаются другие зависимости, но я, очевидно, что-то упускаю в .jar или какой-то шаг в обеспечении правильной работы Maven.

5. Это полезная команда для анализа зависимостей maven: mvn dependency:tree

Ответ №1:

POM-файл Maven ( pom.xml ), который описывает проект / модуль, обычно размещается в корневом каталоге.

Затем файл POM может быть получен вашей установкой Maven, которая автоматически настроит проект, что означает также загрузку зависимостей из их репозиториев.

Пример артефакта, развернутого в репозитории, см.http://central.maven.org/maven2/org/springframework/spring-core/5.1.5.RELEASE /

Комментарии:

1. Вот куда он пошел по умолчанию. Я переместил его, чтобы он соответствовал другим модулям в репозиториях Maven. Я перенесу его обратно и попробую еще раз.

2. Когда я создаю проект, pom.xml отправляется в root. Когда Maven вводит файлы .jar, все они имеют pom.xml похоронен под META-INF.

3. @kgoodwin это вообще не имеет значения. Когда вы «устанавливаете» свой JAR в репозиторий, файл POM находится рядом с JAR (обычно он внешний, в том же каталоге, который содержит)

4. @kgoodwin вместо этого вы можете использовать «deploy» для установки в удаленный репозиторий.

5. Если вы правильно используете Maven, это не должно быть проблемой. Моя проблема заключалась в том, что Eclipse не создавал проект Maven без конфликтов версий JRE, поэтому я попытался создать свой собственный артефакт Maven, не до конца понимая, как это работает. Теперь мы используем функцию convert для преобразования наших неконфликтных проектов в проекты Maven, и все в основном довольны.