从BIRT项目移除BIRT Viewer以部署到WildFly 27的操作步骤咨询
BIRT项目移除BIRT Viewer以部署到WildFly 27的操作步骤咨询
我完全理解你现在的困境——要把依赖Javax的BIRT项目部署到WildFly 27,却卡在BIRT Viewer依赖未迁移到Jakarta的Axis2上,加上用IntelliJ而非BIRT原生的Eclipse开发,连代码高亮和编译错误都不好排查。下面给你梳理一套清晰的操作步骤,帮你顺利移除Viewer模块并完成编译:
一、先精准定位BIRT Viewer的依赖关联
不要盲目删除整个模块,先搞清楚Viewer在项目里的依赖关系:
- 打开你的项目构建文件(Maven的
pom.xml或Gradle的build.gradle),查找所有包含org.eclipse.birt.report.viewer相关的依赖条目,同时检查是否有嵌套在BIRT Runtime里的隐式依赖; - 在IntelliJ的Terminal中执行依赖树命令,确认所有关联项:
- Maven项目:执行
mvn dependency:tree -Dincludes=org.eclipse.birt.report.viewer,org.apache.axis2 - Gradle项目:执行
./gradlew dependencies --configuration runtimeClasspath | grep -E 'viewer|axis2'
- Maven项目:执行
二、逐步移除Viewer及关联的Axis2依赖
Maven项目操作
- 直接删除
pom.xml中所有显式的Viewer依赖节点; - 检查
<dependencyManagement>节点,若有Viewer相关的版本声明,一并删除; - 对BIRT Runtime等核心依赖,添加排除规则移除隐式引入的Viewer和Axis2:
<dependency> <groupId>org.eclipse.birt.runtime</groupId> <artifactId>org.eclipse.birt.runtime</artifactId> <version>你的项目使用版本</version> <exclusions> <exclusion> <groupId>org.eclipse.birt.runtime</groupId> <artifactId>org.eclipse.birt.report.viewer</artifactId> </exclusion> <exclusion> <groupId>org.apache.axis2</groupId> <artifactId>axis2-core</artifactId> </exclusion> <exclusion> <groupId>org.apache.axis2</groupId> <artifactId>axis2-transport-http</artifactId> </exclusion> </exclusions> </dependency>
Gradle项目操作
- 删除
build.gradle中显式的Viewer依赖; - 对核心BIRT依赖添加排除规则:
implementation('org.eclipse.birt.runtime:org.eclipse.birt.runtime:你的项目使用版本') { exclude group: 'org.eclipse.birt.runtime', module: 'org.eclipse.birt.report.viewer' exclude group: 'org.apache.axis2', module: 'axis2-core' exclude group: 'org.apache.axis2', module: 'axis2-transport-http' }
三、解决IntelliJ代码高亮与编译诊断问题
- 刷新项目缓存:执行
File -> Invalidate Caches... -> Invalidate and Restart,这能解决大部分因IDE缓存导致的BIRT代码高亮异常; - 关联BIRT SDK源码:到BIRT官方下载对应版本的SDK源码包,在IntelliJ中右键BIRT相关依赖 ->
Open Library Settings->Attach Sources,选择下载的源码包,让IDE能正确解析BIRT的类结构,错误提示会更准确; - 分步排查编译错误:不要一次性删除所有依赖后直接全量编译,而是每移除一个依赖/排除一个关联项就编译一次,逐步定位问题——比如发现某个类引用了Viewer的
ReportViewer或ViewerServlet,就需要修改代码,删除所有和Viewer相关的业务逻辑(比如报表预览、Viewer端的参数传递代码)。
四、验证Jakarta兼容性与部署
- 移除Viewer后,检查剩余BIRT依赖的API是否和Jakarta兼容:若项目已迁移到Jakarta,手动替换代码中
javax.*为jakarta.*的包路径; - 用WildFly 27的嵌入式模式测试:在IntelliJ中配置WildFly 27服务器,部署项目后启动,查看服务器日志是否有类加载冲突或依赖缺失的错误,及时调整。
备注:内容来源于stack exchange,提问作者user28193963




