Maven исключение зависимости в затененной банке - PullRequest
1 голос
/ 25 октября 2019

Итак, у меня есть многомодульный проект, в котором я создаю затененную банку для добавления в проекты не maven, а также для поддержки других проектов maven. У нас есть несколько наших собственных библиотек в качестве зависимостей. Однако объединение их в затененный jar вызывает проблемы в приложении non-maven, которое уже имеет эти зависимости (и его нельзя просто удалить, чтобы полагаться на затененную версию). Я пытался создать профиль в pom моего проекта, чтобы исключить эти зависимости из затененного фляги, но maven, похоже, это не волнует.

Я не могу опубликовать весь pom, но, по сути, каждый модульзависит от других модулей, и в конце у нас есть последний модуль, который просто объединяет все вместе, где находится мой профиль. Я добавил список зависимостей, в которых есть исключения для артефактов, которые я не хочу добавлять в затененный jar. Я использовал зависимости: дерево, чтобы добавить каждый модуль, имеющий транзитивную зависимость, в исключение и добавил запись зависимости. для него, наряду с его собственным исключением, я добавил artifactSet в конфигурацию плагина shade, чтобы исключить эти артефакты, и добавил плагин forcece для сбоя сборки, если этот артефакт существует.

Артефакт Iне хочу, чтобы добавление все еще добавлялось в затененную банку.

<dependencies>
    <dependency>
        <groupId>my.group</groupId>
        <artifactId>my-module</artifactId>
        <version>1.2.3</version>
        <exclusions>
            <exclusion>
                <groupId>some.dependency</groupId>
                <artifactId>i-dont-want</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

Это работает, но проблема в том, что мне нужно также иметь зависимость для модуля дальше по дереву зависимостей, которое транзитивно зависит отвышеупомянутый модуль.

Итак, когда я делаю следующее, зависимость, которую я пытаюсь исключить, в любом случае оказывается в затененной банке.

<dependencies>
    <dependency>
        <groupId>my.group</groupId>
        <artifactId>my-module</artifactId>
        <version>1.2.3</version>
        <exclusions>
            <exclusion>
                <groupId>some.dependency</groupId>
                <artifactId>i-dont-want</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>my.group</groupId>
        <artifactId>dependes-on-my-module</artifactId>
        <version>1.2.3</version>
    </dependency>
</dependencies>

Если я пытаюсь добавить исключения вмоя конфигурация оттенка, как показано ниже, тоже, кажется, не имеет значения. куча вещей из-за переполнения стека, которые, похоже, не помогли (даже пометив вещи, как указано в моем профиле, или добавив все зависимости, которые имеют транзитивную зависимость, к артефакту, который я пытаюсь удалить без удачи).

Есть ли способ заставить эти переходные зависимости не быть добавлены в мою заштрихованную банку? Я просто хочу, чтобы их не добавляли;в этот момент я попробую что-нибудь ... заранее спасибо за помощь.

1 Ответ

0 голосов
/ 27 октября 2019

В итоге разработчик добавил плагин shade в другой модуль, который в итоге получил транзитивную зависимость, включенную в себя и переданную дальше. Помимо того, что у Мейвена, похоже, нет способа просто сбросить что-то с орбиты, оно, похоже, сейчас работает.

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