Versions Compared

Key

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

...

  • The directory sos has to be created



  • The following .jar files have to be copied from a JS7 Agent installation ./lib/sos directory to the sos directory of the Maven project. The example makes use of release 2.6.1, users should check for a current release.
    • com.sos-berlin.js7.engine.js7-base-<version>.jar
    • com.sos-berlin.js7.engine.js7-data-for-java-<version>.jar
    • com.sos-berlin.js7.engine.js7-launcher-for-java-<version>.jar
    • sos-commons-exception-<version>.jar
    • sos-commons-util-<version>.jar
    • sos-js7-job-<version>.jar
  • The following pom.xml file can be used as a base in the Maven project.

    Code Block
    languagexml
    titlepom.xml
    collapsetrue
    <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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    	<modelVersion>4.0.0</modelVersion>
    	<groupId>com.sos-berlin</groupId>
    	<artifactId>js7jobs</artifactId>
    	<version>0.0.1-SNAPSHOT</version>
    
    	<properties>
    		<!-- release version of js7 jars -->
    		<sos.js7.version>2.56.5<1</sos.js7.version>
    		<!-- 3rd party versions -->
    		<scala.library.version>2.13.11</scala.library.version>
    		<slf4j.version>1.7.36</slf4j.version>
    		<io.vavr.version>0.10.4</io.vavr.version>
    
    		<!-- groupId and artifactIds of js7 jars -->
    		<sos.js7.groupId>com.sos-berlin</sos.js7.groupId>
    		<sos.js7.job.artifactId>sos-js7-job</sos.js7.job.artifactId>
    		<sos.js7.commons.util.artifactId>sos-commons-util</sos.js7.commons.util.artifactId>
    		<sos.js7.commons.exception.artifactId>sos-commons-exception</sos.js7.commons.exception.artifactId>
    		<sos.js7.commons.httpclient.artifactId>sos-commons-httpclient</sos.js7.commons.httpclient.artifactId>
    
    		<sos.js7.engine.groupId>com.sos-berlin.js7.engine</sos.js7.engine.groupId>
    		<sos.js7.launcher.artifactId>js7-launcher-for-java</sos.js7.launcher.artifactId>
    		<sos.js7.data-for-java.artifactId>js7-data-for-java</sos.js7.data-for-java.artifactId>
    		<sos.js7.base.artifactId>js7-base</sos.js7.base.artifactId>
    
    		<!-- directories with js7 jars to install the local project repository -->
    		<sos.js7.external.srcdir>${project.basedir}/sos</sos.js7.external.srcdir>
    	</properties>
    
    	<repositories>
    
    		<!-- public repository for 3rd party jars -->
    		<repository>
    			<id>central</id>
    			<name>Central Repository</name>
    			<url>https://repo1.maven.org/maven2</url>
    			<snapshots>
    				<enabled>false</enabled>
    				<updatePolicy>never</updatePolicy>
    			</snapshots>
    		</repository>
    	</repositories>
    
    	<dependencies>
    		<dependency>
    			<groupId>${sos.js7.engine.groupId}</groupId>
    			<artifactId>${sos.js7.launcher.artifactId}</artifactId>
    			<version>${sos.js7.version}</version>
    			<scope>provided</scope>
    		</dependency>
    		<dependency>
    			<groupId>${sos.js7.engine.groupId}</groupId>
    			<artifactId>${sos.js7.data-for-java.artifactId}</artifactId>
    			<version>${sos.js7.version}</version>
    			<scope>provided</scope>
    		</dependency>
    		<dependency>
    			<groupId>${sos.js7.engine.groupId}</groupId>
    			<artifactId>${sos.js7.base.artifactId}</artifactId>
    			<version>${sos.js7.version}</version>
    			<scope>provided</scope>
    		</dependency>
    
    		<dependency>
    			<groupId>${sos.js7.groupId}</groupId>
    			<artifactId>${sos.js7.job.artifactId}</artifactId>
    			<version>${sos.js7.version}</version>
    			<scope>provided</scope>
    		</dependency>
    		<dependency>
    			<groupId>${sos.js7.groupId}</groupId>
    			<artifactId>${sos.js7.commons.util.artifactId}</artifactId>
    			<version>${sos.js7.version}</version>
    			<scope>provided</scope>
    		</dependency>
    		<dependency>
    			<groupId>${sos.js7.groupId}</groupId>
    			<artifactId>${sos.js7.commons.exception.artifactId}</artifactId>
    			<version>${sos.js7.version}</version>
    			<scope>provided</scope>
    		</dependency>
    		
    		<!-- Example for a custom dependency -->
    		<dependency>
    			<groupId>${sos.js7.groupId}</groupId>
    			<artifactId>${sos.js7.commons.httpclient.artifactId}</artifactId>
    			<version>${sos.js7.version}</version>
    			<scope>provided</scope>
    		</dependency>
    
    		<!-- 3rd Party -->
    		<dependency>
    			<groupId>org.scala-lang</groupId>
    			<artifactId>scala-library</artifactId>
    			<version>${scala.library.version}</version>
    			<scope>provided</scope>
    		</dependency>
    		<dependency>
    			<groupId>io.vavr</groupId>
    			<artifactId>vavr</artifactId>
    			<version>${io.vavr.version}</version>
    			<scope>provided</scope>
    		</dependency>
    		<dependency>
    			<groupId>org.slf4j</groupId>
    			<artifactId>slf4j-api</artifactId>
    			<version>${slf4j.version}</version>
    			<scope>provided</scope>
    		</dependency>
    
    	</dependencies>
    
    	<profiles>
    		<profile>
    			<id>create-local-repo</id>
    			<build>
    				<plugins>
    					<plugin>
    						<artifactId>maven-install-plugin</artifactId>
    						<version>3.1.0</version>
    						<executions>
    							<execution>
    								<id>install-${sos.js7.launcher.artifactId}</id>
    								<goals>
    									<goal>install-file</goal>
    								</goals>
    								<phase>initialize</phase>
    								<configuration>
    									<file>${sos.js7.external.srcdir}/${sos.js7.engine.groupId}.${sos.js7.launcher.artifactId}-${sos.js7.version}.jar</file>
    									<groupId>${sos.js7.engine.groupId}</groupId>
    									<artifactId>${sos.js7.launcher.artifactId}</artifactId>
    									<version>${sos.js7.version}</version>
    									<packaging>jar</packaging>
    									<createChecksum>true</createChecksum>
    								</configuration>
    							</execution>
    							<execution>
    								<id>install-${sos.js7.data-for-java.artifactId}</id>
    								<goals>
    									<goal>install-file</goal>
    								</goals>
    								<phase>initialize</phase>
    								<configuration>
    									<file>${sos.js7.external.srcdir}/${sos.js7.engine.groupId}.${sos.js7.data-for-java.artifactId}-${sos.js7.version}.jar</file>
    									<groupId>${sos.js7.engine.groupId}</groupId>
    									<artifactId>${sos.js7.data-for-java.artifactId}</artifactId>
    									<version>${sos.js7.version}</version>
    									<packaging>jar</packaging>
    									<createChecksum>true</createChecksum>
    								</configuration>
    							</execution>
    							<execution>
    								<id>install-${sos.js7.base.artifactId}</id>
    								<goals>
    									<goal>install-file</goal>
    								</goals>
    								<phase>initialize</phase>
    								<configuration>
    									<file>${sos.js7.external.srcdir}/${sos.js7.engine.groupId}.${sos.js7.base.artifactId}-${sos.js7.version}.jar</file>
    									<groupId>${sos.js7.engine.groupId}</groupId>
    									<artifactId>${sos.js7.base.artifactId}</artifactId>
    									<version>${sos.js7.version}</version>
    									<packaging>jar</packaging>
    									<createChecksum>true</createChecksum>
    								</configuration>
    							</execution>
    
    							<execution>
    								<id>install-${sos.js7.job.artifactId}</id>
    								<goals>
    									<goal>install-file</goal>
    								</goals>
    								<phase>initialize</phase>
    								<configuration>
    									<file>${sos.js7.external.srcdir}/${sos.js7.job.artifactId}-${sos.js7.version}.jar</file>
    									<groupId>${sos.js7.groupId}</groupId>
    									<artifactId>${sos.js7.job.artifactId}</artifactId>
    									<version>${sos.js7.version}</version>
    									<packaging>jar</packaging>
    									<createChecksum>true</createChecksum>
    								</configuration>
    							</execution>
    							<execution>
    								<id>install-${sos.js7.commons.util.artifactId}</id>
    								<goals>
    									<goal>install-file</goal>
    								</goals>
    								<phase>initialize</phase>
    								<configuration>
    									<file>${sos.js7.external.srcdir}/${sos.js7.commons.util.artifactId}-${sos.js7.version}.jar</file>
    									<groupId>${sos.js7.groupId}</groupId>
    									<artifactId>${sos.js7.commons.util.artifactId}</artifactId>
    									<version>${sos.js7.version}</version>
    									<packaging>jar</packaging>
    									<createChecksum>true</createChecksum>
    								</configuration>
    							</execution>
    
    							<execution>
    								<id>install-${sos.js7.commons.httpclient.artifactId}</id>
    								<goals>
    									<goal>install-file</goal>
    								</goals>
    								<phase>initialize</phase>
    								<configuration>
    									<file>${sos.js7.external.srcdir}/${sos.js7.commons.httpclient.artifactId}-${sos.js7.version}.jar</file>
    									<groupId>${sos.js7.groupId}</groupId>
    									<artifactId>${sos.js7.commons.httpclient.artifactId}</artifactId>
    									<version>${sos.js7.version}</version>
    									<packaging>jar</packaging>								
    									<createChecksum>true</createChecksum>
    								</configuration>
    							</execution>
    							<execution>
    								<id>install-${sos.js7.commons.exception.artifactId}</id>
    								<goals>
    									<goal>install-file</goal>
    								</goals>
    								<phase>initialize</phase>
    								<configuration>
    									<file>${sos.js7.external.srcdir}/${sos.js7.commons.exception.artifactId}-${sos.js7.version}.jar</file>
    									<groupId>${sos.js7.groupId}</groupId>
    									<artifactId>${sos.js7.commons.exception.artifactId}</artifactId>
    									<version>${sos.js7.version}</version>
    									<packaging>jar</packaging>
    									<localRepositoryPath>${sos.js7.local.repodir}</localRepositoryPath>
    									<createChecksum>true</createChecksum>
    								</configuration>
    							</execution>
    						</executions>
    					</plugin>
    				</plugins>
    			</build>
    		</profile>
    	</profiles>
    
    	<build>
    		<pluginManagement>
    			<plugins>
    				<plugin>
    					<artifactId>maven-compiler-plugin</artifactId>
    					<version>3.10.1</version>
    					<configuration>
    						<source>1.8</source>
    						<target>1.8</target>
    						<optimize>true</optimize>
    						<showDeprecation>true</showDeprecation>
    						<showWarnings>true</showWarnings>
    					</configuration>
    				</plugin>
    			</plugins>
    		</pluginManagement>
    	</build>
    </project>
  • groupId, artifactId and version should be adjusted.
  • The pom.xml file contains a profile create-local-repo that must be executed once after copying the jar files. It updates the users local .m2 repository with the jars from the sos folder. The dependencies to these jars are in scope provided as these jars are needed at compile time, but are already present in the agent environment.

    Code Block
    languagepowershell
    > mvn initialize -Pcreate-local-repo -U

Activating

...

JUnit Tests and

...

Debugging for JS7 Java Jobs

  • The following .jar files have to be copied additionally from a JS7 Agent installation ./lib/sos directory to the sos directory of the Maven project. These additional jars are needed in scope test as these jars are needed for full debugging. The example makes use of release 2.6.1, users should check for a current release.
    • com.sos-berlin.js7.engine.js7-data-<version>.jar
    • sos-js7-job-<version>.jar
    • sos-commons-hibernate-<version>.jar
    • sos-commons-sign-<version>.jar
    • sos-commons-vfs-<version>.jar

Rerun the profile create-local-repo to copy the jar files to the local Maven .m2 repository. 


Code Block
languagepowershell
> mvn initialize -Pcreate-local-repo -U

...

The following pom.xml file can be used as a base in the Maven project with JUNIT testing for JUnit tests and debugging thereof.

Code Block
languagexml
titlePOM with JUNIT test and debugging JS7 Jobs
collapsetrue
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.sos-berlin</groupId>
	<artifactId>js7jobs</artifactId>
	<version>0.0.1-SNAPSHOT</version>

	<properties>
		<!-- release version of js7 jars -->
		<sos.js7.version>2.56.5<1</sos.js7.version>
		<!-- 3rd party versions -->
		<scala.library.version>2.13.11</scala.library.version>
		<slf4j.version>1.7.36</slf4j.version>
		<io.vavr.version>0.10.4</io.vavr.version>
		<!-- JS7 3rd party test versions -->
		<javax.json.version>1.0.2</javax.json.version>
		<log4j.version>2.20.0</log4j.version>
		<junit.version>4.8.2</junit.version>
		<sourcecode.version>0.3.0</sourcecode.version>
		<circe.version>0.14.3</circe.version>
		<jackson.databind.version>2.14.2</jackson.databind.version>

		<!-- groupId and artifactIds of js7 jars -->
		<sos.js7.groupId>com.sos-berlin</sos.js7.groupId>
		<sos.js7.job.artifactId>sos-js7-job</sos.js7.job.artifactId>
		<sos.js7.commons.util.artifactId>sos-commons-util</sos.js7.commons.util.artifactId>
		<sos.js7.commons.exception.artifactId>sos-commons-exception</sos.js7.commons.exception.artifactId>
		<sos.js7.commons.httpclient.artifactId>sos-commons-httpclient</sos.js7.commons.httpclient.artifactId>

		<sos.js7.engine.groupId>com.sos-berlin.js7.engine</sos.js7.engine.groupId>
		<sos.js7.launcher.artifactId>js7-launcher-for-java</sos.js7.launcher.artifactId>
		<sos.js7.data-for-java.artifactId>js7-data-for-java</sos.js7.data-for-java.artifactId>
		<sos.js7.base.artifactId>js7-base</sos.js7.base.artifactId>
		<!-- sos jars for tests -->
		<sos.js7.commons.hibernate.artifactId>sos-commons-hibernate</sos.js7.commons.hibernate.artifactId>
		<sos.js7.commons.vfs.artifactId>sos-commons-vfs</sos.js7.commons.vfs.artifactId>
		<sos.js7.commons.sign.artifactId>sos-commons-sign</sos.js7.commons.sign.artifactId>
		<sos.js7.data.artifactId>js7-data</sos.js7.data.artifactId>
		 
		<!-- directories with js7 jars to install the local project repository -->
		<sos.js7.external.srcdir>${project.basedir}/sos</sos.js7.external.srcdir>
	</properties>

	<repositories>

		<!-- public repository for 3rd party jars -->
		<repository>
			<id>central</id>
			<name>Central Repository</name>
			<url>https://repo1.maven.org/maven2</url>
			<snapshots>
				<enabled>false</enabled>
				<updatePolicy>never</updatePolicy>
			</snapshots>
		</repository>
	</repositories>

	<dependencies>
		<!-- SOS dependencies -->
		<dependency>
			<groupId>${sos.js7.engine.groupId}</groupId>
			<artifactId>${sos.js7.launcher.artifactId}</artifactId>
			<version>${sos.js7.version}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>${sos.js7.engine.groupId}</groupId>
			<artifactId>${sos.js7.data-for-java.artifactId}</artifactId>
			<version>${sos.js7.version}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>${sos.js7.engine.groupId}</groupId>
			<artifactId>${sos.js7.base.artifactId}</artifactId>
			<version>${sos.js7.version}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>${sos.js7.groupId}</groupId>
			<artifactId>${sos.js7.job.artifactId}</artifactId>
			<version>${sos.js7.version}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>${sos.js7.groupId}</groupId>
			<artifactId>${sos.js7.commons.util.artifactId}</artifactId>
			<version>${sos.js7.version}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>${sos.js7.groupId}</groupId>
			<artifactId>${sos.js7.commons.exception.artifactId}</artifactId>
			<version>${sos.js7.version}</version>
			<scope>provided</scope>
		</dependency>
		
		<!-- Example for a custom dependency -->
		<!--
          <dependency>
			<groupId>${sos.js7.groupId}</groupId>
			<artifactId>${sos.js7.commons.httpclient.artifactId}</artifactId>
			<version>${sos.js7.version}</version>
			<scope>provided</scope>
		</dependency>
        -->
		 

		<!-- SOS test dependencies -->
		<dependency>
			<groupId>${sos.js7.groupId}</groupId>
			<artifactId>${sos.js7.commons.hibernate.artifactId}</artifactId>
			<version>${sos.js7.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>${sos.js7.groupId}</groupId>
			<artifactId>${sos.js7.commons.vfs.artifactId}</artifactId>
			<version>${sos.js7.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>${sos.js7.groupId}</groupId>
			<artifactId>${sos.js7.commons.sign.artifactId}</artifactId>
			<version>${sos.js7.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>${sos.js7.engine.groupId}</groupId>
			<artifactId>${sos.js7.data.artifactId}</artifactId>
			<version>${sos.js7.version}</version>
			<scope>test</scope>
		</dependency>
				
		<!-- 3rd Party -->
		<dependency>
			<groupId>org.scala-lang</groupId>
			<artifactId>scala-library</artifactId>
			<version>${scala.library.version}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>io.vavr</groupId>
			<artifactId>vavr</artifactId>
			<version>${io.vavr.version}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>${slf4j.version}</version>
			<scope>provided</scope>
		</dependency>
		
		<!-- 3rd party test dependencies -->
       	<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>${junit.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-core</artifactId>
			<version>${log4j.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j-impl</artifactId>
			<version>${log4j.version}</version>
			<scope>test</scope>
        </dependency>
		<dependency>
			<groupId>io.circe</groupId>
			<artifactId>circe-core_2.13</artifactId>
			<version>${circe.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>io.circe</groupId>
			<artifactId>circe-generic_2.13</artifactId>
			<version>${circe.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>com.lihaoyi</groupId>
			<artifactId>sourcecode_2.13</artifactId>
			<version>${sourcecode.version}</version>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<profiles>
		<profile>
			<id>create-local-repo</id>
			<build>
				<plugins>
					<plugin>
						<artifactId>maven-install-plugin</artifactId>
						<version>3.1.0</version>
						<executions>
							<execution>
								<id>install-${sos.js7.launcher.artifactId}</id>
								<goals>
									<goal>install-file</goal>
								</goals>
								<phase>initialize</phase>
								<configuration>
									<file>${sos.js7.external.srcdir}/${sos.js7.engine.groupId}.${sos.js7.launcher.artifactId}-${sos.js7.version}.jar</file>
									<groupId>${sos.js7.engine.groupId}</groupId>
									<artifactId>${sos.js7.launcher.artifactId}</artifactId>
									<version>${sos.js7.version}</version>
									<packaging>jar</packaging>
									<createChecksum>true</createChecksum>
								</configuration>
							</execution>
							<execution>
								<id>install-${sos.js7.data-for-java.artifactId}</id>
								<goals>
									<goal>install-file</goal>
								</goals>
								<phase>initialize</phase>
								<configuration>
									<file>${sos.js7.external.srcdir}/${sos.js7.engine.groupId}.${sos.js7.data-for-java.artifactId}-${sos.js7.version}.jar</file>
									<groupId>${sos.js7.engine.groupId}</groupId>
									<artifactId>${sos.js7.data-for-java.artifactId}</artifactId>
									<version>${sos.js7.version}</version>
									<packaging>jar</packaging>
									<createChecksum>true</createChecksum>
								</configuration>
							</execution>
							<execution>
								<id>install-${sos.js7.base.artifactId}</id>
								<goals>
									<goal>install-file</goal>
								</goals>
								<phase>initialize</phase>
								<configuration>
									<file>${sos.js7.external.srcdir}/${sos.js7.engine.groupId}.${sos.js7.base.artifactId}-${sos.js7.version}.jar</file>
									<groupId>${sos.js7.engine.groupId}</groupId>
									<artifactId>${sos.js7.base.artifactId}</artifactId>
									<version>${sos.js7.version}</version>
									<packaging>jar</packaging>
									<createChecksum>true</createChecksum>
								</configuration>
							</execution>

							<execution>
								<id>install-${sos.js7.job.artifactId}</id>
								<goals>
									<goal>install-file</goal>
								</goals>
								<phase>initialize</phase>
								<configuration>
									<file>${sos.js7.external.srcdir}/${sos.js7.job.artifactId}-${sos.js7.version}.jar</file>
									<groupId>${sos.js7.groupId}</groupId>
									<artifactId>${sos.js7.job.artifactId}</artifactId>
									<version>${sos.js7.version}</version>
									<packaging>jar</packaging>
									<createChecksum>true</createChecksum>
								</configuration>
							</execution>
							<execution>
								<id>install-${sos.js7.commons.util.artifactId}</id>
								<goals>
									<goal>install-file</goal>
								</goals>
								<phase>initialize</phase>
								<configuration>
									<file>${sos.js7.external.srcdir}/${sos.js7.commons.util.artifactId}-${sos.js7.version}.jar</file>
									<groupId>${sos.js7.groupId}</groupId>
									<artifactId>${sos.js7.commons.util.artifactId}</artifactId>
									<version>${sos.js7.version}</version>
									<packaging>jar</packaging>
									<createChecksum>true</createChecksum>
								</configuration>
							</execution>

							<execution>
								<id>install-${sos.js7.commons.httpclient.artifactId}</id>
					 			<goals>
									<goal>install-file</goal>
								</goals>
								<phase>initialize</phase>
								<configuration>
									<file>${sos.js7.external.srcdir}/${sos.js7.commons.httpclient.artifactId}-${sos.js7.version}.jar</file>
									<groupId>${sos.js7.groupId}</groupId>
									<artifactId>${sos.js7.commons.httpclient.artifactId}</artifactId>
									<version>${sos.js7.version}</version>
									<packaging>jar</packaging>								
									<createChecksum>true</createChecksum>
								</configuration>
							</execution>
							<execution>
								<id>install-${sos.js7.commons.exception.artifactId}</id>
								<goals>
									<goal>install-file</goal>
								</goals>
								<phase>initialize</phase>
								<configuration>
									<file>${sos.js7.external.srcdir}/${sos.js7.commons.exception.artifactId}-${sos.js7.version}.jar</file>
									<groupId>${sos.js7.groupId}</groupId>
									<artifactId>${sos.js7.commons.exception.artifactId}</artifactId>
									<version>${sos.js7.version}</version>
									<packaging>jar</packaging>
									<localRepositoryPath>${sos.js7.local.repodir}</localRepositoryPath>
									<createChecksum>true</createChecksum>
								</configuration>
							</execution>

                            <!-- SOS Jars for testing-->
							<execution>
								<id>install-${sos.js7.commons.hibernate.artifactId}</id>
								<goals>
									<goal>install-file</goal>
								</goals>
								<phase>initialize</phase>
								<configuration>
									<file>${sos.js7.external.srcdir}/${sos.js7.commons.hibernate.artifactId}-${sos.js7.version}.jar</file>
									<groupId>${sos.js7.groupId}</groupId>
									<artifactId>${sos.js7.commons.hibernate.artifactId}</artifactId>
									<version>${sos.js7.version}</version>
									<packaging>jar</packaging>
									<localRepositoryPath>${sos.js7.local.repodir}</localRepositoryPath>
									<createChecksum>true</createChecksum>
								</configuration>
							</execution>
							<execution>
								<id>install-${sos.js7.commons.sign.artifactId}</id>
								<goals>
									<goal>install-file</goal>
								</goals>
								<phase>initialize</phase>
								<configuration>
									<file>${sos.js7.external.srcdir}/${sos.js7.commons.sign.artifactId}-${sos.js7.version}.jar</file>
									<groupId>${sos.js7.groupId}</groupId>
									<artifactId>${sos.js7.commons.sign.artifactId}</artifactId>
									<version>${sos.js7.version}</version>
									<packaging>jar</packaging>
									<localRepositoryPath>${sos.js7.local.repodir}</localRepositoryPath>
									<createChecksum>true</createChecksum>
								</configuration>
							</execution>
							<execution>
								<id>install-${sos.js7.commons.vfs.artifactId}</id>
								<goals>
									<goal>install-file</goal>
								</goals>
								<phase>initialize</phase>
								<configuration>
									<file>${sos.js7.external.srcdir}/${sos.js7.commons.vfs.artifactId}-${sos.js7.version}.jar</file>
									<groupId>${sos.js7.groupId}</groupId>
									<artifactId>${sos.js7.commons.vfs.artifactId}</artifactId>
									<version>${sos.js7.version}</version>
									<packaging>jar</packaging>
									<localRepositoryPath>${sos.js7.local.repodir}</localRepositoryPath>
									<createChecksum>true</createChecksum>
								</configuration>
							</execution>

						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>

	<build>
		<pluginManagement>
			<plugins>
				<plugin>
					<artifactId>maven-compiler-plugin</artifactId>
					<version>3.10.1</version>
					<configuration>
						<source>1.8</source>
						<target>1.8</target>
						<optimize>true</optimize>
						<showDeprecation>true</showDeprecation>
						<showWarnings>true</showWarnings>
					</configuration>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>
</project>


Creating

...

a JUnit Test for a JS7 Java job

Here Thie is an example for a JUNIT JUnit test class for the JS7 Java job MyJavaJob. 

Code Block
languagejava
titleJUNIT JUnit Test for JS7 Java Jobs
collapsetrue
package com.sos_berlin.js7jobs;

import java.util.HashMap;
import java.util.Map;

import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.sos.js7.job.UnitTestJobHelper;
import com.sos.js7jobs.MyJobArguments;
import com.sos.js7jobs.MyJavaJob;

import js7.data_for_java.order.JOutcome;

public class MyJavaJobTest {
	 
      private private static final Logger LOGGER = LoggerFactory.getLogger(MyJavaJobTest.class);


 	    @Test
	    public void test() throws Exception {
	        Map<String, Object> args = new HashMap<>();
	        args.put("myString", "value 1");
	        args.put("test", true);

	        UnitTestJobHelper<MyJobArguments> h = new UnitTestJobHelper<>(new MyJavaJob());
 	        JOutcome.Completed result = h.processOrder(args);
 	        LOGGER.info(String.format("[RESULT]%s", result));
	    }

}

...


Logging in

...

JUnit Tests

  • Create the folder src/test/resources
  • Add a log4j.xml configurationfile configuration file to the folder 


Code Block
languagexml
titleExample for a log4j.xml configuration file
collapsetrue
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
	<Appenders>
		<!-- Appender for root logger -->
		<Console name="stdout" target="SYSTEM_OUT">
			<PatternLayout pattern="%d{ISO8601}{Europe/Berlin} %-5p %-16.16t %-44.70c{1.} - %m%n"/>
		</Console>
	</Appenders>

	<Loggers>
		<!-- General Loggers - set the following loggers to 'debug' to debug the JOC Cockpit -->
    <Logger name="js7.base.io.https.Https" level="warn"/>
		<Logger name="com.sos" level="debug"/>
		<Logger name="org.hibernate.SQL" level="error"/>

		<!-- root logger with console appender. All other loggers inherit from this logger. -->
		<Root level="info">
			<AppenderRef ref="stdout"/>
		</Root>
	</Loggers>
</Configuration>

Adding other sos-berlin jar files to the repository

There are two options ways to install files to with the local .m2 maven repository maven-install-plugin to the local .m2 maven repository that are not available in public maven repositories. Please use one of these optionsmethods

  • Using the pom.xml file
    • Is recommended when you want to make the configuration portable and should be possible to repeat execution on different environments.this is the recommended, if the build configuration of the JS7 Java Job has to be portable and able to be executed on a different environments, e.g. in shared development.
  • Using  command line
    • E.g. for testing purposes on one local machine. This should only be used, if a single developer wants add a dependency fast in his own local environment. As this is executed only locally this is not portable and other developers have to do the same again.

Using the pom.xml file

Add an execution element to the pom.xml file for each jar file that has to be added. Adjust the values for file, version and artifactId

Code Block
languagexml
<execution>
	    <id>install-${sos.js7.commons.exception.artifactId}</id>
	    <goals>
	         <goal>install-file</goal>
	    </goals>
	    <phase>initialize</phase>
	    <configuration>
	        <file>[filePath]</file>
	        <groupId>${sos.js7.groupId}</groupId>
			<artifactId>[artefactId]</artifactId>
	        <version>${sos.js7.version}</version>
	        <packaging>jar</packaging>
	        <createChecksum>true</createChecksum>
	   </configuration>
</execution>


Using 

...

the Command Line

Open a command shell and call 

Code Block
languagebash
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>

Example

...

Code Block
languagebash
titleExample: Based on the custom dependency example
mvn install:install-file -Dfile=/sos/sos-commons-httpclient-2.

...

6.

...

1.jar -DgroupId=com.sos-berlin -DartifactId=sos-commons-httpclient -Dversion=2.

...

6.

...

1 -Dpackaging=jar

Further Resources

Features

...