Подтвердить что ты не робот

Как исключить все артефакты из группы в maven?

Я использую maven 3 с плагином Enforcer, настроенным для слияния версий. Я использую Spring 3.1.2 и Spring Security 3.1.3.

Проблема заключается в том, что Spring 3.1.3 POM объявляет зависимости от Spring 3.0.7, потому что это минимальная потребность в версии для безопасности Spring. Это означает, что плагин принудительного действия жалуется, потому что график транзитивной зависимости имеет как Spring 3.1.2, так и Spring 3.0.7.

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

Ниже приведен фрагмент кода, поэтому проблема заключается в том, что мне приходится повторять один и тот же фрагмент кода за каждый бит безопасности Spring, это утомительно и делает pom трудным для чтения, есть способ сказать что-то вроде строк.

для зависимости org.springframework.security, независимо от того, что искусственно игнорирует зависимость структуры безопасности в структуре Spring?

<dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-acl</artifactId>
            <version>${spring.security.version}</version>
            <exclusions>
                <exclusion>
                    <artifactId>spring-tx</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-asm</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>

                <exclusion>
                    <artifactId>spring-core</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-aop</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-beans</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-jdbc</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-expression</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-context</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-web</artifactId>
            <version>${spring.security.version}</version>
            <exclusions>
                <exclusion>
                    <artifactId>spring-aop</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-core</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-expression</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-beans</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-context</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>aopalliance</artifactId>
                    <groupId>aopalliance</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-web</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-jdbc</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-tx</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
            </exclusions>
        </dependency>
4b9b3361

Ответ 1

Это, вероятно, не поможет вам, но есть запрос функции, чтобы разрешить маскировку в исключениях, однако это не относится к текущей версии Maven (3.0.4). (Изменить: эта функция теперь присутствует в Maven 3.2.1)

https://issues.apache.org/jira/browse/MNG-3832

Интересным является комментарий в этой проблеме JIRA:

Не уверен, что происходит, но, похоже, это работает в Maven 3.0.3, используя это:

<exclusion>
    <groupId>*</groupId>
    <artifactId>*</artifactId>
</exclusion>

Однако это вызывает следующие предупреждения:

[ПРЕДУПРЕЖДЕНИЕ] 'dependencies.dependency.exclusions.exclusion.groupId' для my.groupid: my.artifactid: ejb-client со значением '*' не соответствует допустимому шаблону идентификатора. @строка 31, столбец 30

[ПРЕДУПРЕЖДЕНИЕ] 'dependencies.dependency.exclusions.exclusion.artifactId' для my.groupid: my.artifactid: ejb-client со значением '*' не соответствует действительному шаблону идентификатора. @строка 32, столбец 33

Поэтому я, вероятно, не должен этого делать, но он работает.

Таким образом, вы можете использовать подстановочный знак artifactId в Maven 3.0.3 или новее и работать с ним, но с предупреждениями и без гарантии совместимости с более поздними версиями.

Ответ 2

Это сработало для меня, исключая все артефакты для groupId org.springframework:

<exclusions>
    <exclusion>
        <groupId>org.springframework</groupId>
        <artifactId>*</artifactId>
    </exclusion>
</exclusions>

Ответ 3

Я столкнулся с той же проблемой. Я думаю, что вы должны явно включать Spring 3.2.x в свой pom.xml для обеспечения версии Spring на уровне 0, когда Maven разрешает конфликтные банки. Пожалуйста, обратитесь к: http://www.baeldung.com/spring-security-with-maven