Отсутствующие классы после добавления пользовательской зависимости в весенний проект - PullRequest
0 голосов
/ 05 февраля 2020

Чтобы избежать дублирования кода, я решил собрать некоторые классы в проекте библиотеки на основе Spring. Ниже приведены шаги, которые я предпринял:

  1. Создан проект с использованием spring initialzr.
  2. Создан желаемый состав и добавлены классы.
  3. Удален основной класс
  4. Добавлено в pom.xml необходимые зависимости
  5. Добавлено в pom.xml плагин maven-jar-plugin

enter image description here

Создан простой скрипт для автоматизации упаковки и установки зависимостей в мой локальный репозиторий 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 библиотечного проекта:

enter image description here

Насколько я понимаю, mvn package не включает зависимости, так как их правильно включить? Я знаю концепцию толстый кувшин , но это, вероятно, не правильное решение.

1 Ответ

0 голосов
/ 05 февраля 2020

Что я использую для компиляции весеннего приложения:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>${maven-compiler.version}</version>
            <configuration>
                <source>11</source>
                <target>11</target>
                <release>11</release>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <fork>true</fork>
                <mainClass>path.to.main.class</mainClass>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

И с

mvn clean install

, оно сгенерирует jar со всеми зависимостями.

Надеюсь, это поможет вам.

...