Skip to content

Development

Philip Helger edited this page May 8, 2024 · 6 revisions

This page encapsulates the most relevant aspects on development with phase4

Submodules

phase4 currently consists of the following submodules:

  • phase4-lib - basic data structures for AS4 handling, sending and receiving
  • phase4-profile-... - AS4 profile for ... as well as the PMode and the respective validation
  • phase4-test - integration test project
  • phase4-server-webapp - Standalone AS4 server for demo purposes
  • phase4-dynamic-discovery - a shared library that contains common stuff for dynamic discovery using SML and SMP
  • phase4-...-client - a specific client to send messages using the ... profile
  • phase4-peppol-servlet - a specific servlet that can be used to receive messages from Peppol
  • phase4-peppol-server-webapp - a simple standalone Peppol AS4 server for demo purposes
  • phase4-spring-boot-demo - an example how to integrate phase4 with Spring Boot

Usage with Maven

If you want to use phase4 with Maven I suggest the following way:

  1. add the BOM into your <dependencyManagement> section and
  2. add the main artefacts without version in the <dependency> block to have a consistent versioning:
<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/maven-v4_0_0.xsd">
...
  <dependencyManagement>
    <dependencies>
...
      <!-- step 1 -->
      <dependency>
        <groupId>com.helger.phase4</groupId>
        <artifactId>phase4-parent-pom</artifactId>
        <version>x.y.z</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
...
    </dependencies>
  </dependencyManagement>
...
  <dependencies>
...
    <!-- step 2 -->
    <dependency>
      <groupId>com.helger.phase4</groupId>
      <artifactId>phase4-lib</artifactId>
    </dependency>
    <dependency>
      <groupId>com.helger.phase4</groupId>
      <artifactId>phase4-profile-peppol</artifactId>
    </dependency>
...
  </dependencies>
...
</project>

Building from source

Apache Maven needed v3.6 or later and Java JDK 11 or later is required. The solution is developed with Adoptium formerly known as AdoptOpenJDK.

To build the whole package on the commandline use mvn clean install -U.

If you are importing this into your IDE and you get build errors, it maybe necessary to run mvn process-sources once in the phase4-lib subproject. Afterwards the folder target/generated-sources/xjc must be added to the source build path. When building only on the commandline, this is done automatically.

Dependencies

The following tables show the runtime dependencies of the different submodules. The order is alphabetical by the artefact name. Dependencies only needed for testing are NOT shown (e.g. JUnit).

Dependencies phase4-lib

The phase4-lib depends at runtime on the following libraries:

Artefact Vendor
org.eclipse.angus:angus-activation Eclipse Foundation AISBL
org.eclipse.angus:angus-mail Eclipse Foundation AISBL
org.bouncycastle:bcmail-jdk18on The Legion of the Bouncy Castle
org.bouncycastle:bcpkix-jdk18on The Legion of the Bouncy Castle
org.bouncycastle:bcprov-jdk18on The Legion of the Bouncy Castle
org.bouncycastle:bcutil-jdk18on The Legion of the Bouncy Castle
commons-codec:commons-codec Apache Software Foundation
org.cryptacular:cryptacular Virginia Tech
org.apache.httpcomponents:client5 Apache Software Foundation
org.apache.httpcomponents.core5:httpcore5 Apache Software Foundation
org.apache.httpcomponents.core5:httpcore5-h2 Apache Software Foundation
jakarta.activation:jakarta.activation-api Eclipse Foundation AISBL
jakarta.mail:jakarta.mail-api Eclipse Foundation AISBL
jakarta.servlet:jakarta.servlet-api Eclipse Foundation AISBL
jakarta.xml.bind:jakarta.xml.bind-api Eclipse Foundation AISBL
org.jasypt:jasypt jasypt Team
org.sl4j:jcl-over-slf4j QOS.ch
com.google.code.findbugs:jsr305 Findbugs team
org.sl4j:jul-to-slf4j QOS.ch
com.helger.commons:ph-bc Philip Helger
com.helger.commons:ph-collection Philip Helger
com.helger.commons:ph-commons Philip Helger
com.helger.commons:ph-config Philip Helger
com.helger.commons:ph-dao Philip Helger
com.helger.commons:ph-datetime Philip Helger
com.helger.web:ph-http Philip Helger
com.helger.web:ph-httpclient Philip Helger
com.helger.commons:ph-jaxb Philip Helger
com.helger.commons:ph-jaxb-adapter Philip Helger
com.helger.commons:ph-json Philip Helger
com.helger.web:ph-mail Philip Helger
com.helger.masterdata:ph-masterdata Philip Helger
com.helger.schedule:ph-mini-quartz Philip Helger
com.helger.web:ph-network Philip Helger
com.helger.photon:ph-oton-audit Philip Helger
com.helger.photon:ph-oton-io Philip Helger
com.helger.photon:ph-oton-security Philip Helger
com.helger.schedule:ph-schedule Philip Helger
com.helger.commons:ph-scopes Philip Helger
com.helger.commons:ph-security Philip Helger
com.helger.web:ph-servlet Philip Helger
com.helger.masterdata:ph-tenancy Philip Helger
com.helger.web:ph-useragent Philip Helger
com.helger.web:ph-web Philip Helger
com.helger.commons:ph-xml Philip Helger
com.helger.xsd:ph-xsds-xlink Philip Helger
com.helger.xsd:ph-xsds-xml Philip Helger
com.helger.xsd:ph-xsds-xmldsig Philip Helger
com.helger.web:ph-xservlet Philip Helger
org.sl4j:slf4j-api QOS.ch
com.github.spotbugs:spotbugs-annotations Spotbugs Team
org.apache.wss4j:wss4j-ws-security-common Apache Software Foundation
org.apache.wss4j:wss4j-ws-security-dom Apache Software Foundation
org.apache.santuario:xmlsec Apache Software Foundation

Dependencies phase4-peppol-client

The submodule phase4-peppol-client adds the following libraries compared to phase4-lib:

Artefact Vendor
dnsjava:dnsjava dnsjava Team
jakarta.xml.soap:jakarta.xml.soap-api Eclipse Foundation AISBL
jakarta.xml.ws:jakarta.xml.ws-api Eclipse Foundation AISBL
com.helger.peppol:peppol-commons Philip Helger
com.helger.peppol:peppol-id Philip Helger
com.helger.peppol:peppol-id-datatypes Philip Helger
com.helger.peppol:peppol-reporting-api Philip Helger
com.helger.peppol:peppol-sbdh Philip Helger
com.helger.peppol:peppol-smp-client Philip Helger
com.helger.peppol:peppol-smp-datatypes Philip Helger
com.helger.cii:ph-cii-d16b Philip Helger
com.helger.diver:ph-diver-api Philip Helger
com.helger.web:ph-dns Philip Helger
com.helger.phive:phive-api Philip Helger
com.helger.phive.rules:phive-rules-peppol Philip Helger
com.helger.phive:phive-xml Philip Helger
com.helger:ph-sbdh Philip Helger
com.helger.schematron:ph-schematron-api Philip Helger
com.helger.schematron:ph-schematron-pure Philip Helger
com.helger.schematron:ph-schematron-schxslt Philip Helger
com.helger.schematron:ph-schematron-xslt Philip Helger
com.helger.ubl:ph-ubl21 Philip Helger
com.helger.ubl:ph-ubl23 Philip Helger
com.helger.xsd:ph-xsds-bdxr-smp1 Philip Helger
com.helger.xsd:ph-xsds-bdxr-smp2 Philip Helger
com.helger.xsd:ph-xsds-ccts-cct-schemamodule Philip Helger
com.helger.xsd:ph-xsds-wsaddr Philip Helger
com.helger.xsd:ph-xsds-xades132 Philip Helger
com.helger.xsd:ph-xsds-xades141 Philip Helger
com.helger.xsd:ph-xsds-xmldsig11 Philip Helger
net.sf.saxon:Saxon-HE Saxonica
name.dmaus.schxslt:schxslt David Maus
org.xmlresolver:xmlresolver Norman Walsh

Dependencies phase4-peppol-servlet

The submodule phase4-peppol-servlet adds the following libraries compared to phase4-lib:

Artefact Vendor
dnsjava:dnsjava dnsjava Team
jakarta.xml.soap:jakarta.xml.soap-api Eclipse Foundation AISBL
jakarta.xml.ws:jakarta.xml.ws-api Eclipse Foundation AISBL
com.helger.peppol:peppol-commons Philip Helger
com.helger.peppol:peppol-id Philip Helger
com.helger.peppol:peppol-id-datatypes Philip Helger
com.helger.peppol:peppol-reporting-api Philip Helger
com.helger.peppol:peppol-sbdh Philip Helger
com.helger.peppol:peppol-smp-client Philip Helger
com.helger.peppol:peppol-smp-datatypes Philip Helger
com.helger.web:ph-dns Philip Helger
com.helger:ph-sbdh Philip Helger
com.helger.xsd:ph-xsds-bdxr-smp1 Philip Helger
com.helger.xsd:ph-xsds-bdxr-smp2 Philip Helger
com.helger.xsd:ph-xsds-ccts-cct-schemamodule Philip Helger
com.helger.xsd:ph-xsds-wsaddr Philip Helger
com.helger.xsd:ph-xsds-xades132 Philip Helger
com.helger.xsd:ph-xsds-xades141 Philip Helger
com.helger.xsd:ph-xsds-xmldsig11 Philip Helger