Как применить импорт и предоставленную область действия к зависимости maven? - PullRequest
0 голосов
/ 09 июля 2019

У меня есть проект X Java-Maven, который зависит от проекта Y, созданного другой командой.Эта команда предоставляет нам новые версии y.jar.Мы хотели динамически загрузить y.jar.

Итак, мы указали путь к y.jar в нашем проекте X, и проект X загружает y.jar с этого пути всякий раз, когда доступна новая версия.Мы указали зависимость проекта Y в pom проекта X с предоставленной областью действия (так что y.jar не будет связан внутри x.jar).

Но тогда это не включает зависимости, указанные в проекте Y в проекте X. И во время выполнения мы получаем ошибку NoClassDefFoundError для тех классов, которые включены в зависимости Y.

Как я могу включить зависимости проекта Y в проект X?Обычно мы импортируем зависимости другого pom с областью импорта.Но я уже указал проект Y с предоставленной областью.(Обратите внимание, что x.jar - это толстый jar и содержит все зависимости, указанные в pom X.)

Какой может быть лучший подход для управления зависимостями в этом сценарии.Должен ли я быть толстой банкой?

1 Ответ

0 голосов
/ 09 июля 2019

Если ваша область для Y помечена как предоставленная, тогда yes Y должен быть на пути к классам и быть жирным банком, особенно если POM доступен и в нем перечислены его зависимости. Если вы все еще получаете NOCLASSDEFFOUND, я бы изучил y.jar - я бы предположил, что его POM неисправен, то есть объявляет зависимости, не включенные в jar. Если Y не толстая банка или его POM неисправен, то вам нужно явно исключить его зависимости, а затем добавить их как зависимость времени компиляции. Возможно затенение их. Вы можете использовать операторы исключения в зависимости.

Читайте об этом здесь https://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html

Лично я ненавижу полагаться на производные зависимости и обычно явно объявляю их в моем POM. Если они предоставлены Y, то я бы выделил их в том виде, в котором они были предоставлены, в противном случае при компиляции прицел и убедитесь, что они заштрихованы в моей банке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...