【问题标题】:Add specific plugins and config when using Birt with Maven在 Maven 中使用 Birt 时添加特定的插件和配置
【发布时间】:2016-04-13 08:47:25
【问题描述】:

我有一个 Maven jar 项目,我在其中使用 Birt 来生成一些 PDF。

为了使用 Birt 引擎,我刚刚将此依赖项添加到我的<dependencies>

<dependency>
    <groupId>org.eclipse.birt.runtime</groupId>
    <artifactId>org.eclipse.birt.runtime</artifactId>
    <version>4.4.2</version>
</dependency>

我使用mvn exec:java 运行我的主类。

我的问题是:当我在没有 Maven 的情况下使用 Birt 运行时,我可以在 plugins 目录中添加 Birt 插件并修改 plugins/org.eclipse.birt.report.engine.fonts_4.4.2.v201410272105/fontsConfig.xml 以添加特定的 &lt;font-paths&gt;&lt;path ...,我该如何使用这个 Maven环境?

我现在也不确定我必须给org.eclipse.birt.core.framework.PlatformConfig.setBIRTHome(String)org.eclipse.birt.report.engine.api.EngineConfig.setEngineHome(String) 提供哪条路径。

我尝试关注 the guide 并使用了 config.setEngineHome("absolute_path_to_a_4.4.2_osgi_birt_runtime"),但后来我得到了那个堆栈跟踪(在对 factory.createReportEngine(config) 的调用中):

java.lang.NullPointerException
at org.eclipse.birt.report.engine.api.impl.ReportEngine$EngineExtensionManager.<init>(ReportEngine.java:822)
at org.eclipse.birt.report.engine.api.impl.ReportEngine.<init>(ReportEngine.java:111)
at org.eclipse.birt.report.engine.api.impl.ReportEngineFactory$1.run(ReportEngineFactory.java:18)
at org.eclipse.birt.report.engine.api.impl.ReportEngineFactory$1.run(ReportEngineFactory.java:1)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.birt.report.engine.api.impl.ReportEngineFactory.createReportEngine(ReportEngineFactory.java:14)

似乎Platform.getExtensionRegistry() 返回null...

如果我不调用config.setEngineHomeconfig.setBIRTHome,那么我有org.eclipse.birt.report.engine.api.impl.ParameterValidationException: Required parameter myParam is not set.,这是我在迁移到Maven 之前没有的错误(实际上,我的rptdesign 使用myParam 从链接库)。

我也已将我的问题发布到Birt dev forums

【问题讨论】:

    标签: maven birt


    【解决方案1】:

    首先,您可以将 Birt 4.4.2 与此 Maven 配置一起使用(因为 pom.xml of the runtime 存在错误并声明了这些依赖项的 2 个不同版本):

    <dependency>
        <groupId>org.eclipse.birt.runtime</groupId>
        <artifactId>org.eclipse.birt.runtime</artifactId>
        <version>4.4.2</version>
        <exclusions>
            <exclusion>
                <groupId>org.eclipse.birt.runtime</groupId>
                <artifactId>org.eclipse.osgi.services</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.eclipse.birt.runtime</groupId>
                <artifactId>com.ibm.icu</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.eclipse.birt.runtime</groupId>
        <artifactId>org.eclipse.osgi.services</artifactId>
        <version>3.4.0.v20140312-2051</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.birt.runtime</groupId>
        <artifactId>com.ibm.icu</artifactId>
        <version>52.1.1.v201501240615</version>
    </dependency>
    

    然后,可以像添加任何经典 Maven 依赖项一样添加任何 Birt 插件(前提是存在正确的 META-INF/MANIFEST.MF 定义 Bundle-NameBundle-Version 属性)。

    然后你必须启动Birt engine in POJO mode无需调用EngineConfig.setEngineHome(engineHome)

    最后,对于字体配置,您可以使用:

    这是一个引导代码示例(基于Birt website directives):

    try{
        final EngineConfig config = new EngineConfig( );
    
        config.setLogConfig("c:/temp", Level.FINE);
        config.setFontConfig("c:/temp/fontsConfig.xml");
    
        Platform.startup( config );
        //If using RE API in Eclipse/RCP application this is not needed.
        IReportEngineFactory factory = (IReportEngineFactory) Platform
                .createFactoryObject( IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY );
        IReportEngine engine = factory.createReportEngine( config );
        engine.changeLogLevel( Level.WARNING );
    }catch( Exception ex){
        ex.printStackTrace();
    }
    // Run reports, etc.
    ...
    
    // destroy the engine.
    try
    {
        engine.destroy();
        Platform.shutdown();
        //Bugzilla 351052
        RegistryProviderFactory.releaseDefault();
    }catch ( EngineException e1 ){
        // Ignore
    }
    

    【讨论】:

      猜你喜欢
      • 2013-01-06
      • 2018-09-03
      • 2011-03-27
      • 1970-01-01
      • 2012-04-15
      • 2018-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多