Due to a recent project I started working on a talend component. This blog post is not about how to do this from scratch, I am quite sure that Talend provides enough tutorials about it, alternatively you can do it like me and just use existing components as reference and build your own one (work environments without internet access suck!)
Prior reading this You Should Have:
- A basic understanding of Talend Data Integration solutions.
- A basic understanding how to develop and deploy Talend (Java) components.
- Knowledge about maven, maven build plugins and ant builds.
My Environment is:
- Mac OS 10.6.6 with Java 1.6
- Eclipse 3.5.1 Java EE editon
- Jaspersoft ETL 4.1.2 (aka Talend Open Studio 4.1.2)
Everything I describe applies for Jaspersoft ETL, Talend Open Studio and Talend Integration suite. The <Jaspersoft ETL workspace dir> is my local Talend repository folder – the Eclipse workspace folder of Jaspersoft ETL.
At The Beginning I found a few items to struggle with:
- Project structure:
- src/main/template: contains all files which are patched during the build process such as the component registration file.
- src/main/resources: contains all resources such as jet templates, icons, message properties
- src/test/java: reference implementation of the functionality which shall be in the component
- for the build (see below):
- src/assembly, pom.xml for the maven build
- build.xml for the ant wrapper.
- Editing Template files: By default Eclipse handles *.javajet files as text files without code completion and syntax highlighting. If you download the m2t JET from http://download.eclipse.org/modeling/m2t/updates/releases/ an editor will be installed. Now go to Preferences > General > Editors > File Associations and add “*.javajet” as extension. Select it and click on the second Add.. button and select “JET-Java Emitter Templates Editor”. Click Ok. Reopen the javajet templates.
- To refresh the javajet templates in Talend without restarting it just hit Control+Shift+Function+F3 to re-initialize the code generation.
- Dealing with JETorg.eclipse.emf.codegen.jet.JETException: The generated java files are in a specific folder. These files can help to understand what the compilation error caused. I linked the folder into my project
ln -s <Jaspersoft ETL workspace dir>/.JETEmitters/src/org/talend/designer/codegen/translators/<family> ./gen-src
ln -s <Jaspersoft ETL workspace dir>/.metadata/.log ./log.log
The log file i monitor with tail on command line.
The Build And The Component File
I setup maven to maintain the dependencies for my project as I don’t want to collect everything manually, I also want to be able to easily migrate to a later version. Now, as you might now, the component descriptor file requires a list of component specific imports. For obvious reasons I did not want to create this list manually, therefore I wrote a little ant script which wraps the maven build and patches the component descriptor.
The maven build file is responsible to collect all required files and bundle it as a single zip file. I used
- the maven dependencies plugin to download all required jars into the target folder during prepare-package phase.
- the maven assembly plugin for collecting all resources and bundling into a zip file during package phase.
The ant build is has only a few targets
- a prepare target which triggers mvn clean prepare-package
- a patch method which utilizes the (evil) antcontrib library to iterate over the jars and collect their names which are written in the required structure into the component file.
- a package target which triggers mvn package.
Popularity: 68% [?]Tags: ant, bestpractce, component, development, hint, howto, jaspersoft, maven, talend