Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Include Page
_This_Is_a_Draft
_This_Is_a_Draft
Anchor
top
top

Table of Contents

From Archetype

Prerequisites

Generate ETLUnit Project from Archetype

Types of Projects of Interest

  • Schema project
  • ETLUnit project

Archetype Generation Steps

In a command window, navigate to the folder in which the project should reside.

Section
Column
width25px

 

Column
width1000
Code Block
languagebash
titleNavigate to new project location
userme@LO-PPBBKK55 /c
$ mkdir src/my_etlunit_proj
userme@LO-PPBBKK55 /c
$ cd src/my_etlunit_proj
userme@LO-PPBBKK55 /c/src/my_etlunit_proj
Column

 

Obtain a list of ETLUnit-related available archetypes from Maven Central.

Section
Column
width25px

 

Column
width1000px
Code Block
languagebash
titleExample of filtered list of available archetypes
$ mvn archetype:generate | grep bradleysmithllc
768: remote -> org.bitbucket.bradleysmithllc.etlunit:etlunit-database-schema-archetype (-)
769: remote -> org.bitbucket.bradleysmithllc.etlunit:etlunit-feature-archetype (-)
770: remote -> org.bitbucket.bradleysmithllc.etlunit:etlunit-project-archetype (-)
771: remote -> org.bitbucket.bradleysmithllc.etlunit:feature-archetype (-)
772: remote -> org.bitbucket.bradleysmithllc.etlunit:project-archetype (-)
Column

 

Press <Ctrl>-C to end the command.

Next, list ALL archetypes from which you can select the one you want.

Section
Column
width25px

 

Column
width1000px
Code Block
mvn archetype:generate
...
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 582:
...
111: 3.5.0
112: 3.5.1
113: 3.6.0
114: 3.6.1
115: 3.7.0
116: 3.8.0
117: 3.8.1
118: 3.9.0
119: 3.9.1
120: 3.9.2
121: 3.9.3
122: 3.9.4
123: 3.9.5
124: 3.9.6
Choose a number: 
Column

 

After the mvn archetype:generate command, at each of the two prompts above, type in the appropriate answer.  The actual numbers will change as Maven Central adds more archetypes.

 

Below are some sample responses to the prompts that follow, to help project generation.  The colons indicate prompts.

Section
Column
width25px

 

Column
width1000px
Code Block
languagebash
titleSample answers to POM questions
Define value for property 'groupId': : org.userme.etlunit.samples
Define value for property 'artifactId': : isolate_fml_pkg
Define value for property 'version':  1.0-SNAPSHOT: : 1.0.0
Define value for property 'package':  org.userme.etlunit.samples: :
Confirm properties configuration:
groupId: org.userme.etlunit.samples
artifactId: isolate_fml_pkg
version: 1.0.0
package: org.userme.etlunit.samples
 Y: : Y <Enter>
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Archetype: etlunit-project-archetype:3.9.6
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: org.userme.etlunit.samples
[INFO] Parameter: artifactId, Value: isolate_fml_pkg
[INFO] Parameter: version, Value: 1.0.0
[INFO] Parameter: package, Value: org.userme.etlunit.samples
[INFO] Parameter: packageInPathFormat, Value: org/userme/etlunit/samples
[INFO] Parameter: package, Value: org.userme.etlunit.samples
[INFO] Parameter: version, Value: 1.0.0
[INFO] Parameter: groupId, Value: org.userme.etlunit.samples
[INFO] Parameter: artifactId, Value: isolate_fml_pkg
[INFO] project created from Archetype in dir: C:\src\my_etlunit_proj\isolate_fml_pkg
[INFO] ------------------------------------------------------------------------
Column

 

Your project has been generated.  There isn't much there yet.

Go to top

Generated POM

Below is a sample of the Maven generated POM.

Section
Column
width25px

 

Column
width1000px
Code Block
languagexml
titlepom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.userme.etlunit.samples</groupId>
    <artifactId>isolate_fml_pkg</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>

    <name>isolate_fml_pkg</name>
    <url>http://org.userme.etlunit.samples</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <etlunit.project.version>3.9.6</etlunit.project.version>
    </properties>

    <repositories>
        <repository>
            <id>distrib-snapshots</id>
            <name>Snapshots</name>
            <url>https://oss.sonatype.org/content/repositories/snapshots</url>
        </repository>
    </repositories>

    <dependencies>
        <dependency>
            <groupId>org.bitbucket.bradleysmithllc.etlunit</groupId>
            <artifactId>etlunit-core</artifactId>
            <version>${etlunit.project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.bitbucket.bradleysmithllc.etlunit</groupId>
            <artifactId>etlunit-cli</artifactId>
            <version>${etlunit.project.version}</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.bitbucket.bradleysmithllc.etlunit</groupId>
                <artifactId>etlunit-maven</artifactId>
                <version>${etlunit.project.version}</version>
                <executions>
                    <execution>
                        <phase>test</phase>
                        <goals>
                            <goal>test</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.4</version>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/etlunit-lib</outputDirectory>
                            <overWriteReleases>false</overWriteReleases>
                            <overWriteSnapshots>false</overWriteSnapshots>
                            <overWriteIfNewer>true</overWriteIfNewer>
                        </configuration>
                    </execution>
                    <execution>
                        <id>unpack-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>unpack</goal>
                        </goals>
                        <configuration>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>org.bitbucket.bradleysmithllc.etlunit</groupId>
                                    <artifactId>etlunit-cli</artifactId>
                                    <type>tar.gz</type>
                                    <version>${etlunit.project.version}</version>
                                    <overWrite>false</overWrite>
                                    <classifier>bin</classifier>
                                    <outputDirectory>${basedir}</outputDirectory>
                                </artifactItem>
                            </artifactItems>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
Column

 

 

Folder Structure

Following is an example of some basic the folder structures for your new project.

Section
Column
width25px

 

Column
width200px

 

 

Folders generated by archetype:generate

Image Added

Column
width250px

 

Basic layout before addition of database

Image Added

Column
width250px

Basic layout after adding Informatica

EDW_EXTRACTS matches the name of an Informatica folder.

Image Added

Column
 

Go to top

Basic Configuration for Database

Example Using SQLServer Database

Create or Make Available the Database Schema

You can put the schema in your project or in another project and then make that project available by including its JAR file as a dependency in your project.

Example

Place a data definition file in a location named for the database.

Section
Column
width25px

 

Column

Image Added

Configure the database folder, the database name and the schema script in etlunit.json.

Section
Column
width25px

 

Column
width900px
Panel
bgColor#E0E6F8
titleColor#0B0B61
titleBGColor#CED8F6
titleetlunit.json

{

"install-features": ["database", "sql-server-database", "log-assertion"],

"features":

{

"database":

{

"database-definitions":

{

"edw":

{

"implementation-id": "sql-server",

"user-name": "user",

"password": "pwd",

"schema-scripts":

[

"EDW.SQL"

]

}

}

}

}

}

Column

 

  • "sql-server" implementation-id: The implementation-id corresponds to the folder in which the database folders are placed.
  • "edw" database-definition:  Corresponds to the folder bearing the database name.  This name will be used in the @Database annotations in ETLUnit tests.
  • "EDW.SQL" schema-script: Name of the file with the data definitions.

Push to Bitbucket

You can follow steps to setting up a Bitbucket repository for your project on the Bitbucket Create a Repository page.

You may also want to use a graphical user interface like SourceTree.

Go to top