Чтобы избежать дублирования кода, я решил собрать некоторые классы в проекте библиотеки на основе Spring. Ниже приведены шаги, которые я предпринял:
- Создан проект с использованием spring initialzr.
- Создан желаемый состав и добавлены классы.
- Удален основной класс
- Добавлено в
pom.xml
необходимые зависимости - Добавлено в
pom.xml
плагин maven-jar-plugin
Создан простой скрипт для автоматизации упаковки и установки зависимостей в мой локальный репозиторий maven:
#!/usr/bin/env bash
POM="pom.xml"
ARTIFACT="springbot-messenger-client"
MVN_VERSION=$(mvn -q -f $POM \
-Dexec.executable=echo \
-Dexec.args='${project.version}' \
--non-recursive \
exec:exec)
mvn package -f $POM
mvn install:install-file \
-Dfile="target/"$ARTIFACT"-"$MVN_VERSION".jar" \
-DgroupId=ai.optime \
-DartifactId=$ARTIFACT \
-Dversion=$MVN_VERSION \
-Dpackaging=jar
echo "Version "$MVN_VERSION" of "$ARTIFACT" installed"
Выполнение сценария выполнено успешно, и я добавил свою вновь созданную зависимость в другой проект.
Во время запуска приложения возникло исключение:
Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.dataformat.yaml.YAMLFactory
Класс YAMLFactory
принадлежит зависимости jackson-dataformat-yaml
, которая добавляется в pom.xml
библиотечного проекта:
Насколько я понимаю, mvn package
не включает зависимости, так как их правильно включить? Я знаю концепцию толстый кувшин , но это, вероятно, не правильное решение.