我已在我的项目的 pom.xml
guava 版本中定义,但在公共(public)模块中我只想使用 guava
的子依赖项:com.google.code .findbugs/artifactId:jsr305
。如何获取与 Guava 中相同的已用 jsr305
版本或仅子依赖项 jsr305
?
最佳答案
我不知道有什么优雅的方法可以做到这一点(例如动态提取版本等),但是......
如果您只想知道版本(一次),只需查看 guava 的 pom.xml
即可。使用 IntelliJ,您只需按住 Ctrl 键并单击依赖项即可打开它,对于 Eclipse,我认为它是类似的。
然后,您可以将此版本添加到 dependencyManagement 部分中的主 pom.xml 中,并且在您的 commons pom.xml
中,您可以只使用不带版本的依赖项。
此外,您可以使用maven-enforcer-plugin
来确保您的整个项目没有依赖冲突。因此,如果这在某个时刻出现分歧,您会在构建时立即看到它。请参阅Solving Dependency Conflicts in Maven 。但是,jsr305 是一个注释库,因此我不希望版本之间有太多不兼容的更改(只要您明确使用较新的版本)
<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>
编辑:在这种情况下,jsr305的版本不是在guava本身定义的,而是在guava-parent中定义的
关于java - 如何从依赖中获取子依赖或版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57524509/