Я хочу собрать библиотеку файлов jar и не включать зависимости, так как они будут в пути к классу приложения, которое будет использовать эту библиотеку.Я использую maven scope - при условии для этого все зависимости исключены, но немногие еще остались.Я обнаружил, что они пришли из spring-boot-starter-webflux .Почему это так?И что я должен сделать, чтобы избавиться от них?
Вот пример зависимости
<dependencies>
<!-- Nevertheless provided scope some jars from this dependency
are in compiled jar file. Why ? -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
Пример проекта только с одной этой зависимостью https://github.com/pavelmorozov/MavenProvidedTest/blob/master/pom.xml
Пусто скомпилированоjar проекта имеет размер 5+ мегабайт.
Обновление После предложения JF Meier я попробовал mvn зависимость: дерево и нашел две библиотеки с областью действияcompile
[INFO] +- org.springframework.boot:spring-boot-starter-reactor-netty:jar:2.1.3.RELEASE:provided
[INFO] | \- io.projectreactor.netty:reactor-netty:jar:0.8.5.RELEASE:compile
[INFO] | +- io.netty:netty-codec-http:jar:4.1.33.Final:compile
[INFO] | | +- io.netty:netty-common:jar:4.1.33.Final:compile
[INFO] | | +- io.netty:netty-buffer:jar:4.1.33.Final:compile
[INFO] | | +- io.netty:netty-transport:jar:4.1.33.Final:compile
[INFO] | | | \- io.netty:netty-resolver:jar:4.1.33.Final:compile
[INFO] | | \- io.netty:netty-codec:jar:4.1.33.Final:compile
[INFO] | +- io.netty:netty-codec-http2:jar:4.1.33.Final:compile
[INFO] | +- io.netty:netty-handler:jar:4.1.33.Final:compile
[INFO] | +- io.netty:netty-handler-proxy:jar:4.1.33.Final:compile
[INFO] | | \- io.netty:netty-codec-socks:jar:4.1.33.Final:compile
[INFO] | \- io.netty:netty-transport-native-epoll:jar:linux-x86_64:4.1.33.Final:compile
[INFO] | \- io.netty:netty-transport-native-unix-common:jar:4.1.33.Final:compile
...
[INFO] +- org.springframework:spring-webflux:jar:5.1.5.RELEASE:provided
[INFO] | \- io.projectreactor:reactor-core:jar:3.2.6.RELEASE:compile
[INFO] | \- org.reactivestreams:reactive-streams:jar:1.0.2:compile
И, например, я вижу один из файлов POM
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-reactor-netty</artifactId>
<version>2.1.3.RELEASE</version>
...
<dependencies>
<dependency>
<groupId>io.projectreactor.netty</groupId>
<artifactId>reactor-netty</artifactId>
<version>0.8.5.RELEASE</version>
<scope>compile</scope>
</dependency>
</dependencies>
Теперь я до сих пор не понимаю, почему другие библиотеки Spring Boot не переопределяют scope to компилировать .Означает ли это, что две библиотеки построены неправильно или по какой-то причине?И я до сих пор не понимаю, как простым способом удалить зависимости, которые, кажется, имеют область переопределения?
Я пытался указать номер версии в своей зависимости POM - но это не имеет никакого эффекта - те же самые jar-файлы, включенные в jar-файл скомпилированного проекта:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
<version>2.1.3.RELEASE</version>
<scope>provided</scope>
</dependency>
Обновление о родителях
Родительский pom-файл spring-boot-starter-parent не содержит dependencyManagement раздел, но есть еще один родительский элемент - spring-boot-dependencies - и в нем есть раздел dependencyManagement , но скомпилированная область там не указана.Некоторые из зависимостей имеют импорт области, хотя.Я не понимаю, может ли эта зависимость от объема импорта иметь эффект в моем случае.Некоторые примеры отсюда:
<dependencyManagement>
<dependencies>
...
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-reactor-netty</artifactId>
<version>2.1.3.RELEASE</version>
</dependency>
...
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-bom</artifactId>
<version>${reactor-bom.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
...
</dependencies>
</dependencyManagement>
Часть содержимого spring-boot-starter-реактор-netty я выложил здесь в предыдущем обновлении.
Обновление после Энди Уилкинсон ответьте просто для пояснения - такие зависимости не включены в jar, похоже, что плагин весенней загрузки maven работает здесь по-другому:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<scope>provided</scope>
</dependency>