如何在POM中集成BIRT 4.9.0?Java17重构依赖报错排查
问题背景
重构适配Java 17的应用时,将原有BIRT 3.7.x runtime升级到4.9.0,在POM中添加了以下依赖:
<dependency> <groupId>org.eclipse.birt</groupId> <artifactId>birt-runtime</artifactId> <version>4.9.0</version> </dependency> <dependency> <groupId>org.eclipse.birt</groupId> <artifactId>birt-runtime-osgi</artifactId> <version>4.9.0</version> </dependency>
构建时抛出依赖未找到异常:
org.eclipse.birt:birt-runtime:jar:4.9.0 was not found in https://repo1.maven.org/maven2 during a previous attempt
已清理本地.m2仓库,且确认中央仓库存在该依赖,但不想手动下载,希望通过配置解决。
解决步骤
核对依赖的类型/Classifier
BIRT runtime的发布包并非默认的jar格式,查看中央仓库的实际包可知,birt-runtime 4.9.0提供的是zip包。需要在依赖中指定类型:<dependency> <groupId>org.eclipse.birt</groupId> <artifactId>birt-runtime</artifactId> <version>4.9.0</version> <type>zip</type> </dependency>如果应用需要解压后的jar文件,可配合
maven-dependency-plugin自动解压该zip包。强制Maven刷新依赖缓存
执行构建时加上-U参数,强制Maven忽略本地缓存的解析结果,重新从中央仓库拉取依赖信息:mvn clean install -U检查Maven镜像配置
打开settings.xml(用户目录下的.m2/settings.xml或Maven全局配置文件),确认没有配置拦截中央仓库的镜像,或者镜像仓库完整同步了中央仓库的内容。如果存在mirrorOf为*的镜像,需确保该镜像可以正常访问BIRT的依赖资源。精简依赖配置
birt-runtime-osgi已包含OSGI环境下的完整runtime,可尝试只保留该依赖,避免重复引入导致的解析冲突。若必须同时使用两个依赖,需确认它们的范围和类型配置正确。验证Maven版本兼容性
Java 17需要搭配Maven 3.8.1及以上版本使用,旧版Maven可能存在Java版本兼容问题,导致依赖解析失败。升级Maven到最新稳定版后重试构建。
内容的提问来源于stack exchange,提问作者pojo-guy

