美文网首页
Maven方式集成BIRT 4.6 Webviewer

Maven方式集成BIRT 4.6 Webviewer

作者: 光行天下 | 来源:发表于2019-10-01 17:27 被阅读0次

平生从未见过如此糟糕的官方maven发布质量,窃以为是公司只想卖商业版本,对应的开源版本BIRT简直就是抱来养的。

为了顺利集成BIRT,采用两步走方式:以eclipse的能运行版本为比较基础,再使用maven方式集成验证。

传统动态web项目方式

使用eclipse官方下载的birt-runtime-4.6.0-20160607.zip中的WebViewerExample示例,使用传统web项目方式,检验birt是否可以正常运行。

结论是不能运行,报错“Invalid signature file digest for Manifest main attributes”,是有几个jar包中的签名有问题,官方发行包太应付了事了,实话说做这事儿的人必须开除(可能老板就是这个意思,好让大家去买他们的商业版本)。

排查如下两个包有问题:org.eclipse.birt.runtime_4.6.0-20160607.jar, org.eclipse.datatools.connectivity.oda_3.5.0.201603142002.jar。

打开包删除两个签名文件:/META-INF/ECLIPSE_.RSA 和/META-INF/ECLIPSE_.SF。

在tomcat 8.5中运行,可以正确访问报表。

在这个项目的基础上,创建maven项目,并使用beyand compare软件快速比较依赖的jar包区别,进行下一步maven集成工作。

maven集成方式

创建maven web项目,使用仓库中的BIRT 4.6,JDK为1.8,tomcat为8.5。

        <dependency>
            <groupId>org.eclipse.birt.runtime</groupId>
            <artifactId>org.eclipse.birt.runtime</artifactId>
            <version>4.6.0-20160607</version>
            <exclusions>
                <exclusion>
                    <groupId>org.eclipse.birt.runtime</groupId>
                    <artifactId>org.eclipse.orbit.mongodb</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
  1. maven依赖中的这个包org.eclipse.birt.runtime-4.6.0-20160607.jar,和runtime示例中对应的包比较,缺失Tidy类,需要使用runtime下载zip包中的对应文件(org.eclipse.birt.runtime_4.6.0-20160607.jar删除签名文件,注意下划线和横线的区别)替换本地maven仓库中的文件。

  2. maven依赖包中的org.eclipse.datatools.connectivity.oda-3.5.0.201603142002.jar,打开这个文件,删除/META-INF/ECLIPSE_.RSA 和/META-INF/ECLIPSE_.SF。

  3. maven仓库中没有BIRT web viewer,使用本地仓库加载,将viewservlets.jar拷贝到GAV对应的本地路径(例如:/Users/kevin/.m2/repository/org/eclipse/birt/viewer/birt.viewer/4.6.0-20160607/birt.viewer-4.6.0-20160607.jar)。

  4. 不停的启动,检查缺失的包:axis-jaxrpc和commons-discovery。

  5. 直到可以正常访问报表。

最后可运行的maven pom文件为

<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>net.xprogrammer</groupId>
    <artifactId>birtmvn</artifactId>
    <packaging>war</packaging>
    <version>0.0.1-SNAPSHOT</version>
    <name>birtmvn Maven Webapp</name>
    <url>http://maven.apache.org</url>

    <dependencies>

        <dependency>
            <groupId>org.eclipse.birt.runtime</groupId>
            <artifactId>org.eclipse.birt.runtime</artifactId>
            <version>4.6.0-20160607</version>
            <exclusions>
                <exclusion>
                    <groupId>org.eclipse.birt.runtime</groupId>
                    <artifactId>org.eclipse.orbit.mongodb</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        
        <!-- 整合BIRT需要添加的依赖包 -->
        <dependency>
            <groupId>org.eclipse.birt.viewer</groupId>
            <artifactId>birt.viewer</artifactId>
            <version>4.6.0-20160607</version>
        </dependency>
        <dependency>
            <groupId>org.apache.axis</groupId>
            <artifactId>axis</artifactId>
            <version>1.4</version>
        </dependency>
        <dependency>
            <groupId>org.apache.axis</groupId>
            <artifactId>axis-jaxrpc</artifactId>
            <version>1.4</version>
        </dependency>
        <dependency>
            <groupId>commons-discovery</groupId>
            <artifactId>commons-discovery</artifactId>
            <version>0.5</version>
        </dependency>
        <!-- end 整合BIRT需要添加的依赖包 -->

    </dependencies>
    <build>
        <finalName>birtmvn</finalName>
    </build>
    
</project>

报表也能正常导出。

2019年10月1日,成都,Kevin。

https://blog.innoventsolutions.com/innovent-solutions-blog/2020/04/getting-started-with-the-birt-spring-boot-starter.html

2020年4月23日,成都,Kevin。

相关文章

网友评论

      本文标题:Maven方式集成BIRT 4.6 Webviewer

      本文链接:https://www.haomeiwen.com/subject/nbofpctx.html