Как автоматизировать обнаружение конфликта зависимостей

Java-приложение, которое я разрабатываю, должно работать на серверах, к которым у меня нет прямого доступа. Иногда возникают конфликты зависимостей. Я имею в виду, что на некоторых серверах приложение работает идеально, а на других такое же приложение не работает. И ошибки указывают на конфликт версий библиотек. Я хотел бы, чтобы приложение информировало о конфликте версии библиотеки, а не просто вылетало с NoSuchFieldError, NoSuchMethodError, NoClassDefFoundError и т. д. Я могу получить список библиотек на платформе сборки приложения с помощью mvn dependency:tree Итак, мне нужно, чтобы приложение считывало версии библиотек на платформе, на которой оно работает , сравните его со списком библиотек на платформе сборки и сообщите о несоответствии версий. Итак, как приложение может определять библиотеки во время выполнения? Или, может быть, есть более удобный способ автоматизировать обнаружение конфликтов зависимостей?


person Loom    schedule 14.06.2019    source источник


Ответы (1)


Я считаю, что вам нужно решить эту проблему перед развертыванием. Вы не можете полагаться на Running Tool для сохранения. Поэтому я бы предложил решить их на гораздо более ранней стадии.

Если вы используете maven для управления зависимостями. Вы можете попробовать ниже:

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>1.4.1</version>
        <configuration>
            <rules><dependencyConvergence/></rules>
        </configuration>
    </plugin>
</plugins>

затем

mvn enforcer:enforce

Вы можете прочитать этот хороший материал

person Qingfei Yuan    schedule 14.06.2019
comment
Спасибо. На самом деле у меня другая проблема. Я обновлю вопрос. - person Loom; 14.06.2019