04. Configuring Eclipse IDE with Versioning System

Overview

If you want to setup an Eclipse development environment with the Pentaho Reporting Classic Engine source code, the following instructions will get you started.

NOTE: While the Eclipse IDE is nice and somewhat easy for development on the Pentaho Reporting Classic Engine, it is by no means required to develop on or against the engine.

Install Eclipse with SVN Tools

Make sure you have Eclipse setup and installed and you have installed Subclipse (Subversion tools for Eclipse). If you have not, follow the steps to setup your development environment.

Connect to the SVN Repository

The next step is to connect to the SVN Repository for the Pentaho Reporting project. This repository connection information is:

svn://source.pentaho.org/pentaho-reporting 

  • In Eclipse, open the SVN Repositories Window (Window Menu > Show View > Other > SVN > SVN Repository)


  • Right click in the SVN Repository window > New > Repository Location...


  • Fill in the following fields:

    Field Name

    Value

    URL

    svn://source.pentaho.org/pentaho-reporting



  • The connection should be established and displayed in the SVN Repository window

Check Out the Latest Code

Once the connection is established, it is time to check out the latest source code.

  • In the SVN Repository windows, navigate to engines > classic > core > trunk
  • Right-click and select Checkout...

  • Click on the Finish button...
  • From the New Project window, select Java Project...

  • In the New Java Project window, enter the Project Name (something like pentaho-reporting-classic-core) and click on the Next button...

  • In the Default output folder, append a /bin to the default folder and click Finish...

  • Ignore the warning message about resources that exist in the project...
  • At this point, the latest version of the project is checked out and the source code is sitting on your computer

Configure the Project for Eclipse

Configuring project paths

Once the project is checked out, there are some Eclipse specific tasks that need to be done since this isn't an Eclipse project by default.

  • Back in the Java perspective, on the Navigator or Package Explorer view, right-click on the pentaho-reporting-classic-core project and select Properties
  • Select the Java Build Path item

  • On the Source tab:
    • Highlight the pentaho-reporting-classic-core item and click the Remove button.
    • Click the Add Folder button, check the pentaho-reporting-classic-core/source folder and click OK

    • Set the Default output folder to pentaho-reporting-classic-core/bin (and un-check the Allow output folders for source folders option if it is selected)

Configuring the classpath and dependent libraries

Be Careful

Due to a bug in SVN, which causes binary checkins to corrupt the repository, the Reporting Projects do not always contain the latest versions of the internal libraries. The JARs checked in always represent the last release, not the latest development version.

If you develop for the trunk-version of the reporting engine, make sure that you check out all dependent projects from the Subversion Repository and use these sources for your development. All modern IDEs are capable to define dependencies between subprojects of the same workspace, and therefore, if you set up your IDE correctly, pre-built JARs are not needed.

  • On the Libraries tab, click the Add JARs... button
    • Navigate to the pentaho-reporting-classic-core ? lib directory
    • Highlight all the jar files in that directory
    • Click on the OK button

  • Click on the OK button of the Properties dialog

At this point, the pentaho-reporting-classic-core project should compile and be ready for development.
You can repeat the same steps to work on the pentaho-reporting-classic-extensions project or any of the associated libraries (located under trunk/libraries):

Dependency List for Version 0.8.10:

LibBase

  • Apache-Commons-Logging (Required)

LibFormat

  • Internal: LibBase (Required)

LibFormula

  • Internal: LibBase (Required)
  • External: JavaCC (Build-Time dependency, only if Parser has changed)

Pixie

  • Internal: LibBase (Required)

LibRepository

  • Internal: LibBase (Required)

LibSerializer

  • Internal: LibBase (Required)

LibLoader

  • Internal: LibBase (Required)
  • Internal: Pixie (Optional)
  • External: JDK 1.4 (Optional)
  • External: Batik 1.6 (Optional)
    • rhino-1.6r7.jar
    • Xerces 2.5.0.jar
    • XML-APIs.jar
  • External: OSCache 2.3 (Optional)
  • External: EHCache 1.4.1 (Optional)
    • JSR107cache-1.0.jar
    • backport-util-concurrent-3.0.jar

LibFonts

  • Internal: LibBase (Required)
  • Internal: LibLoader (Required)
  • External: iText (Optional)

LibXml

  • Internal: LibBase (Required)
  • Internal: LibLoader (Required)
  • External: JAXP-1.3 compatible XML parser (Required)

LibDocbundle

  • Internal: LibBase (Required)
  • Internal: LibLoader (Required)
  • Internal: LibXml (Required)
  • External: JAXP-1.3 compatible XML parser (Required)

Classic-Engine

  • Internal: LibBase (Required)
  • Internal: LibLoader (Required)
  • Internal: LibXml (Required)
  • Internal: LibDocbundle (Required)
  • Internal: LibRepository (Required)
  • Internal: LibFormat (Required)
  • Internal: LibFormula (Required)
  • Internal: Pixie (Optional, for WMF support, from LibLoader))
  • External: Batik (Optional, for SVG support, from LibLoader)
  • External: EHCacahe (Optional, from LibLoader)
  • External: OSCache (Optional, from LibLoader)
  • External: Apache POI-3.0 (Optional, for Excel export)
  • External: iText 1.5.3 or higher (Optional, for PDF and RTF export, from LibFonts)
  • External: BeanScriptingHost (Optional, for BSHExpression)
  • External: Apache BeanScriptingFramework (Optional, for BSFExpression)

Classic-Engine Extensions

  • Internal: LibBase (Required)
  • Internal: LibLoader (Required)
  • Internal: LibXml (Required)
  • Internal: LibDocbundle (Required)
  • Internal: LibRepository (Required)
  • Internal: LibFormat (Required)
  • Internal: LibFormula (Required)
  • Internal: Pixie (Optional, for WMF support, from LibLoader))
  • Internal: Classic Engine
  • External: Batik (Optional, for SVG support, from LibLoader)
  • External: EHCacahe (Optional, from LibLoader)
  • External: OSCache (Optional, from LibLoader)
  • External: Apache POI-3.0 (Optional, for Excel export)
  • External: iText 1.5.3 or higher (Optional, for PDF and RTF export, from LibFonts)
  • External: BeanScriptingHost (Optional, for BSHExpression)
  • External: Apache BeanScriptingFramework (Optional, for BSFExpression)
  • Internal: LibSparkline (Optional, for Sparkline support)
  • External: Barbecue 1.5beta1 (Optional, for Barcode support)
  • External: JDK 1.4 (Optional, for JDK 1.4 printing and JDK 1.4 configuration support)
  • External: Hibernate 3 (Optional, for HQL datasources)
  • External: Rhino 1.6r7 (Optional, for JavaScript-Expressions; also from LibLoader if Batik is used)

Classic-Engine Demo

  • Internal: LibBase (Required)
  • Internal: LibLoader (Required)
  • Internal: LibXml (Required)
  • Internal: LibDocbundle (Required)
  • Internal: LibRepository (Required)
  • Internal: LibFormat (Required)
  • Internal: LibFormula (Required)
  • Internal: Pixie (Optional, for WMF support, from LibLoader))
  • Internal: Classic Engine
  • External: Batik (Optional, for SVG support, from LibLoader)
  • External: EHCacahe (Optional, from LibLoader)
  • External: OSCache (Optional, from LibLoader)
  • External: Apache POI-3.0 (Optional, for Excel export)
  • External: iText 1.5.3 or higher (Optional, for PDF and RTF export, from LibFonts)
  • External: BeanScriptingHost (Required, for BSHExpression)
  • Internal: LibSparkline (Required, for Sparkline support)
  • External: Barbecue 1.5beta1 (Required, for Barcode support)
  • External: JFreeChart (Required, for Charting Demo)
  • External: HSQL-DB (Required, for SQL-Demo)

Testcases

  • Internal: LibBase (Required)
  • Internal: LibLoader (Required)
  • Internal: LibXml (Required)
  • Internal: LibDocbundle (Required)
  • Internal: LibRepository (Required)
  • Internal: LibFormat (Required)
  • Internal: LibFormula (Required)
  • Internal: Pixie (Optional, for WMF support, from LibLoader))
  • Internal: Classic Engine
  • External: Batik (Optional, for SVG support, from LibLoader)
  • External: EHCacahe (Optional, from LibLoader)
  • External: OSCache (Optional, from LibLoader)
  • External: Apache POI-3.0 (Optional, for Excel export)
  • External: iText 1.5.3 or higher (Optional, for PDF and RTF export, from LibFonts)
  • External: BeanScriptingHost (Required, for BSHExpression)
  • Internal: LibSparkline (Required, for Sparkline support)
  • External: Barbecue 1.5beta1 (Required, for Barcode support)
  • External: JFreeChart (Required, for Charting Demo)
  • External: HSQL-DB (Required, for SQL-Demo)
  • External: JUnit
  • External: XMLUnit

Wizard-core, Wizard-Swing

  • Internal: LibBase (Required)
  • Internal: LibLoader (Required)
  • Internal: LibXml (Required)
  • Internal: LibDocbundle (Required)
  • Internal: LibRepository (Required)
  • Internal: LibFormat (Required)
  • Internal: LibFormula (Required)
  • Internal: Pixie (Optional, for WMF support, from LibLoader))
  • Internal: Classic Engine
  • External: Batik (Optional, for SVG support, from LibLoader)
  • External: EHCacahe (Optional, from LibLoader)
  • External: OSCache (Optional, from LibLoader)
  • External: Apache POI-3.0 (Optional, for Excel export)
  • External: iText 1.5.3 or higher (Optional, for PDF and RTF export, from LibFonts)
  • External: BeanScriptingHost (Optional, for BSHExpression)
  • External: Apache BeanScriptingFramework (Optional, for BSFExpression)

WAQR

  • ToDo: transforme in a own project
  • Depends on Wizard-Core and Pentaho-Platform

Dependency List for Version 0.8.9:

External dependencies:
* jcommon-1.0.12 (or any later version)
* poi-3.0.1-jdk122-final-20071014.jar
  (this is a JDK 1.2 version of Apache POI-3.0.1 which is fully compatible
   with the unmodified Apache-POI 3.0.1. Our version only removes a couple of
   classes that reference JDK 1.4 functionality. It is safe to use the
   unmodified version 3.0.1 or any later version of Apache-POI instead.)
* bsf-2.4.0 (or any later version)
* bsh-1.3.0 (or any later version)
* itext-1.5.2 (or any later version)
* gnujaxp (only needed if running on JDK 1.2 or JDK 1.3; a JAXP-compatible
  XML parser is part of any JDK 1.4 or higher)
* JDK 1.2.2 (or higher)
* rhino-1.6r7
* svgsalamander (build: 2005-Oct-28)

Internal Dependencies:
* jcommon-serializer-0.2.0
* libxml-0.9.11
* libloader-0.3.7
* libfonts-0.3.4
* libformula-0.1.16
* librepository-0.1.6
* pixie-0.8.10

The internal dependencies refer to libraries spawned by the reporting project.
As the libraries are still in active development with APIs changing on a regular
base, we only guarantee that the reporting engine works with a known configuration.
Any later version may or may not work. The libraries will stabilize on our way
to version 1.0 - at that point we will freeze the API and guarantee backward
compatibility.

Dependency List for Version 0.8.10 and all internal libraries:
Dependencies on internal projects always refer to the latest version in the
subversion repository. Dependent libraries are released as needed whenever a
new version of the reporting-engine is released.

LibBase:
* commons-logging-1.0.4 (or any later version)
* JDK 1.2 or higher

Pixie:
# libbase
* commons-logging-1.0.4 (or any later version)
* JDK 1.2 or higher

LibRepository:
# libbase
* commons-logging-1.0.4 (or any later version)
* JDK 1.2 or higher

LibFormula:
# libbase
* commons-logging-1.0.4 (or any later version)
* JDK 1.2 or higher

LibLoader:
# libbase
# pixie (optional);
* JDK 1.2
* commons-logging-1.0.4 (or any later version)
* apache-batik-1.6: (optional)
  - batik-awt-util.jar
  - batik-bridge.jar
  - batik-css.jar
  - batik-dom.jar
  - batik-ext.jar
  - batik-gui-util.jar
  - batik-gvt.jar
  - batik-parser.jar
  - batik-script.jar
  - batik-svg-dom.jar
  - batik-util.jar
  - batik-xml.jar
  - rhino-1.6r7.jar
  - xerces_2_5_0.jar
  - xml-apis.jar
  - JDK 1.3 or higher
* os-cache-2.3 (optional; OS-Cache 2.4 does *NOT* work)
* eh-cache-1.2.4 (or higher; optional)
  - JDK 1.4

LibXML:
# libbase
# libloader
* JDK 1.2
* commons-logging-1.0.4 (or any later version)
* gnujaxp (only needed if running on JDK 1.2 or JDK 1.3; a JAXP-compatible
  XML parser is part of any JDK 1.4 or higher)

LibFonts:
# libbase
# libloader
* JDK 1.2
* commons-logging-1.0.4 (or any later version)
* itext-1.5.2 (or any later version)

LibDocBundle:
# libbase
# libloader
# libxml
# librepository
* JDK 1.2
* commons-logging-1.0.4 (or any later version)
* gnujaxp (only needed if running on JDK 1.2 or JDK 1.3; a JAXP-compatible
  XML parser is part of any JDK 1.4 or higher)

Reporting-Engine-Classic-Core:
#libbase
#libloader
#libxml
#libfonts
#libformula
#librepository
#libdocbundle
# (all optional libraries from the internal library-subprojects)
* JDK 1.2
* commons-logging-1.0.4 (or any later version)
* bsf-2.4.0 (or any later version)
* bsh-1.3.0 (or any later version)
* itext-1.5.2 (or any later version)
* poi-3.0.1-jdk122-final-20071014.jar
  (this is a JDK 1.2 version of Apache POI-3.0.1 which is fully compatible
   with the unmodified Apache-POI 3.0.1. Our version only removes a couple of
   classes that reference JDK 1.4 functionality. It is safe to use the
   unmodified version 3.0.1 or any later version of Apache-POI instead.)

Reporting-Engine-Classic-Extensions:
# (all from Reporting-Engine-Classic-Core)
# (all optional libraries from the internal library-subprojects)
* Hibernate 3.0 (Optional; or any later version)
* rhino-1.6r7
* JDK 1.4 (or any later version)

Reporting-Engine-Classic-Demo:
# (all from Reporting-Engine-Classic-Extensions)
# (all optional libraries from the internal library-subprojects)
* hsqldb-1.8.0 (or any later version)