Page History
...
- The directory
sos
has to be created - The following .jar files have to be copied from a JS7 Agent installation's
./lib/sos
directory to thesos
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 language xml title pom.xml collapse true <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.6.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
andversion
should be adjusted.The
pom.xml
file contains a profilecreate-local-repo
that must be executed once after copying the jar files. It updates the users local.m2
repository with the jars from thesos
folder. The dependencies to these jars the .jar files are in scope provided as these jars are needed at compile time, but are already present in the agent environment.Code Block language powershell > mvn initialize -Pcreate-local-repo -U
...
- The following .jar files have to be copied additionally from a JS7 Agent installation
./lib/sos
directory to thesos
directory of the Maven project. These The additional jars .jar files are needed required in scopetest
as these jars are needed for use with 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 | ||||||
---|---|---|---|---|---|---|
| ||||||
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 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 configuration file to the folder
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<?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 ways to install files with the maven-install-plugin to the local .m2 maven repository that are not available in public maven repositories. Please use one of these methods.
- Using the pom.xml file
- this is the recommended way, if the build configuration of the JS7 Java Job has to be portable and able to should be executed on a different environments, e.g. for example in shared development.
- Using command line
- E.g. For example for testing purposes on one a local machine.
Note This should only be used, if a single developer wants to add a dependency fast quickly in his own local environment. As this is executed only locally this is not portable and other developers have to do the same again.
...
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 | ||
---|---|---|
| ||
<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 call:
Code Block | ||
---|---|---|
| ||
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging> |
Example:
Code Block | ||||
---|---|---|---|---|
| ||||
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 |
...