#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, и все в основном довольны.