This guide provides technical information for developers who want to contribute to OpenFastTrace AsciiDoc plugin.
<dependency>
<groupId>org.itsallcode</groupId>
<artifactId>openfasttrace-asciidoc-plugin</artifactId>
<version>0.2.0</version>
</dependency>dependencies {
compile 'org.itsallcode:openfasttrace-asciidoc-plugin:0.2.0'
}The list below shows all build time dependencies in alphabetical order. Note that except the Maven build tool all required modules are downloaded automatically by Maven.
| Dependency | Purpose | License |
|---|---|---|
| Apache Maven | Build tool | Apache License 2.0 |
| AsciiDoctorJ | Framework for parsing AsciiDoc | Apache License 2.0 |
| OpenFastTrace API | Interface to the OpenFaceTrace engine | GNU General Public License V3 |
| Dependency | Purpose | License |
|---|---|---|
| Hamcrest Auto Matcher | Speed-up for building Hamcrest matchers | GNU General Public License V3 |
| JUnit | Unit testing framework | Eclipse Public License 1.0 |
| Mockito | Mocking framework | MIT License |
| Dependency | Purpose | License |
|---|---|---|
| OpenFastTrace | The OpenFaceTrace engine | GNU General Public License V3 |
OpenFastTrace uses Apache Maven as technical project management tool that resolves and downloads the build-dependencies before building the packages.
apt-get install openjdk-17-jdk mavenOFT uses Maven Toolchains to configure the correct JDK version (see the documentation for details). To configure the Toolchains plugin create file ~/.m2/toolchains.xml with the following content. Adapt the paths to your JDKs.
<toolchains xmlns="http://maven.apache.org/TOOLCHAINS/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/TOOLCHAINS/1.1.0 http://maven.apache.org/xsd/toolchains-1.1.0.xsd">
<toolchain>
<type>jdk</type>
<provides>
<version>17</version>
</provides>
<configuration>
<jdkHome>/usr/lib/jvm/java-17-openjdk-amd64/</jdkHome>
</configuration>
</toolchain>
<toolchain>
<type>jdk</type>
<provides>
<version>21</version>
</provides>
<configuration>
<jdkHome>/usr/lib/jvm/java-21-openjdk-amd64/</jdkHome>
</configuration>
</toolchain>
</toolchains>git clone https://github.com/itsallcode/openfasttrace-asciidoc-plugin.gitmvn testmvn verifymvn package -DskipTestsBy default, the AsciiDoc plugin is built with Java 17. To build and test with a later version of Java, add argument -Djava.version=21 to the Maven command.
mvn -Djava.version=21 package -DskipTestsBy default, Maven builds the AsciiDoc OFT Plugin modules sequentially. To speed up the build and execute the modules in parallel, add argument -T 1C to the Maven command.
mvn -T 1C package -DskipTestsThis project comes with formatter and save actions configuration for Eclipse.
If you use a different IDE like IntelliJ, please import the formatter configuration itsallcode_formatter.xml.
We use java.util.logging for logging. To configure log level and formatting, add the following system property:
-Djava.util.logging.config.file=src/test/resources/logging.propertiesDisplay dependencies and plugins with newer versions:
mvn --update-snapshots versions:display-dependency-updates versions:display-plugin-updatesAutomatically upgrade dependencies:
mvn --update-snapshots versions:use-latest-releases versions:update-propertiesThis project is configured to produce exactly the same artifacts each time when building from the same Git commit. See the Maven Guide to Configuring for Reproducible Builds.
- Verify correct configuration of the reproducible build (also included in phase
verify):mvn initialize artifact:check-buildplan
- Verify that the build produces excatly the same artifacts:
mvn clean install -DskipTests mvn clean verify artifact:compare -DskipTests
The build will use the last Git commit timestamp as timestamp for files in .jar archives.
mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent package sonar:sonar -Dsonar.token=[token]See analysis results at sonarcloud.io.
NOTE: This currently only works for release version numbers, not SNAPSHOT versions.
- Checkout the
mainbranch. - Create a new "prepare-release" branch.
- Update version in
pom.xml(versionelement)README.mddoc/developer_guide.md
- Add changes in new version to
doc/changes/changes.mdanddoc/changes/changes_$VERSION.mdand update the release date. - Commit and push changes.
- Create a new pull request, have it reviewed and merged to
main.
- Start the release workflow
- Run command
gh workflow run release.yml --repo itsallcode/openfasttrace-asciidoc-plugin --ref main - or go to GitHub Actions and start the
release.ymlworkflow on branchmain.
- Update title and description of the newly created GitHub release.
- After some time the release will be available at Maven Central.