Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 66 additions & 12 deletions docs/manual/deployment/packaging.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Frank configurations can be packaged as `.zip` or `.jar` files for deployment. R
## Archive Structure

```
my-config/BuildInfo.properties
META-INF/MANIFEST.MF
my-config/Configuration.xml
my-config/Data.xml
my-config/webcontent/index.html
Expand All @@ -24,15 +24,6 @@ Rules:
- Frontend code goes in `<config-name>/webcontent/`
- Java `.class` files are siblings of the configuration root directory (not inside it)

## BuildInfo.properties

```properties
configuration.version=1
configuration.timestamp=20250807-163000
```

Version information is read from `BuildInfo.properties` in uploaded archives for database deployment.

## Maven Parent POM

Use the Frank!Framework configuration parent POM to handle packaging automatically:
Expand All @@ -41,7 +32,7 @@ Use the Frank!Framework configuration parent POM to handle packaging automatical
<parent>
<groupId>org.frankframework</groupId>
<artifactId>configuration-parent</artifactId>
<version>10.1.0</version>
<version>10.2.0</version>
</parent>
```

Expand All @@ -61,6 +52,69 @@ The resulting `.war` file (in `target/`) is deployed by placing it in the applic

WAR-based deployments integrate with CI/CD pipelines (Jenkins, GitLab CI, GitHub Actions).

## Loading Multiple Configurations
## Uploading Multiple Configurations in the console

Pack all configuration JAR files into a single `.zip` file. Use the "Multiple Configurations" checkbox in the "Upload Configuration" screen and upload the zip.

## Using autoload of multiple configurations with Docker compose

When using Docker, you can autoload multiple configurations by placing them in a directory and mounting it to `/opt/frank/configurations` in the container.
The Frank!Framework will automatically load all configurations found in that directory if you use:
```
environment:
- configurations.directory.autoLoad=true
```

We have a maven module which defines the base for a configuration jar file. This is the `configuration-parent` module. It is available in the
Maven Central repository. You can use it as a parent POM for your configuration project.
Assuming you have two configurations named `Configuration1` and `Configuration2` residing in the `src/main/configurations` directory of your project.
There's also a `src/main/resources` directory which contains some resources that will be copied to the root of the jar file. The `pom.xml` file would look
like this:

```
<?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>

<parent>
<groupId>org.frankframework</groupId>
<artifactId>configuration-parent</artifactId>
<version>10.3.0-SNAPSHOT</version>
</parent>

<artifactId>multiple-configs</artifactId>

<properties>
<configuration.names>Configuration1, Configuration2</configuration.names>
<framework.version>10.3.0-SNAPSHOT</framework.version>
<maven.compiler.source>25</maven.compiler.source>
<maven.compiler.target>25</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<build>
<defaultGoal>install</defaultGoal>
<resources>
<resource>
<directory>${project.basedir}/src/main/configurations</directory>
</resource>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
</resource>
</resources>
...
</project>
```

Building this would result in a `.jar` file with the following structure:
* META-INF
* MANIFEST.MF
* Configuration1
* Configuration.xml
* Configuration2
* Configuration.xml
* DeploymentSpecifics.properties (copied from `/src/main/resources`)
* resources.yml (copied from `/src/main/resources`)

In the pom.xml file we have defined the configurations that are contained in the jar file using the property `<configuration.names>Configuration1, Configuration2</configuration.names>`.
The configuration names must differ from the `${instance.name}` property.