Overview on Developing

This page presents all development informatation around JabRef. For users documentation see https://docs.jabref.org.

Teaching Exercises

We are very happy that JabRef is part of Software Engineering trainings. Please head to Teaching for more information on using JabRef as teaching object and on previous courses where JabRef was used.

How tos

Command Line

The package org.jabref.cli is responsible for handling the command line options.

During development, one can configure IntelliJ to pass command line paramters:

IntelliJ-run-configuration

Passing command line arguments using gradle is currently not possible as all arguments (such as -Dfile.encoding=windows-1252) are passed to the application.

Without jlink, it is not possible to generate a fat jar any more. During development, the capabilities of the IDE has to be used.

Groups

Diagram showing aspects of groups: Groups.uml.

Decision Records

This log lists the decisions for JabRef.

  • ADR-0000 - Use Markdown Architectural Decision Records

  • ADR-0001 - Use Crowdin for translations

  • ADR-0002 - Use slf4j together with log4j2 for logging

  • ADR-0003 - Use Gradle as build tool

  • ADR-0004 - Use MariaDB Connector

  • ADR-0005 - Fully Support UTF-8 Only For LaTeX Files

  • ADR-0006 - Only translated strings in language file

  • ADR-0007 - Provide a human-readable changelog

  • ADR-0008 - Use public final instead of getters to offer access to immutable variables

  • ADR-0009 - Use Plain JUnit5 for advanced test assertions

  • ADR-0010 - Use H2 as Internal SQL Database

For new ADRs, please use template.md as basis. More information on MADR is available at https://adr.github.io/madr/. General information about architectural decision records is available at https://adr.github.io/.