Available templates

qube currently has the following templates available:

  1. cli-java

  2. gui-java

  3. lib-java

  4. lib-groovy

  5. service-java

  6. portlet-groovy

  7. portlet-groovy-osgi

In the following every template is devoted its own section, which explains its purpose, design, included frameworks/libraries, usage and frequently asked questions. A set of frequently questions, which all templates share see here: Shared FAQ FAQ. It is recommended to use the sidebar to navigate this documentation, since it is very long and cumbersome to scroll through.

cli-java

Purpose

cli-java is the template of choice for picocli based command line applications, which require a JVM and the related ecosystem (e.g. due to requirement to use OpenBIS).
These applications result in jars and can therefore only be started when a JDK is present. They do not ship with custom JREs!
Therefore, if you are not bound to the JVM ecosystem, it may be a better idea to go for Python based projects, since Python is installed and available on every Unix machine.
QUBE currently does not offer a cli-python template, but you may make use of COOKIETEMPLE’s cli-python.

Design

This template follows the standard Maven project layout.

├── AUTHORS.rst
├── CHANGELOG.rst
├── CODEOFCONDUCT.rst
├── .dependabot
│   └── config.yml
├── docs
│   ├── authors.rst
│   ├── changelog.rst
│   ├── codeofconduct.rst
│   ├── conf.py
│   ├── index.rst
│   ├── installation.rst
│   ├── make.bat
│   ├── Makefile
│   ├── readme.rst
│   ├── requirements.txt
│   └── usage.rst
├── .github
│   ├── ISSUE_TEMPLATE
│   │   ├── bug_report.md
│   │   ├── feature_request.md
│   │   └── general_question.md
│   ├── pull_request_template.md
│   └── workflows
│       ├── build_docs.yml
│       ├── build_package.yml
│       ├── java_checkstyle.yml
│       └── run_tests.yml
├── .gitignore
├── LICENSE
├── pom.xml
├── qube.cfg
├── .qube.yml
├── README.rst
├── .readthedocs.yml
├── src
│   ├── main
│   │   ├── java
│   │   │   └── life
│   │   │       └── qbic
│   │   │           └── cli
│   │   │               ├── SampleCommand.java
│   │   │               ├── SampleEntryPoint.java
│   │   │               └── SampleTool.java
│   │   └── resources
│   │       ├── log4j2.xml
│   │       └── tool.properties
│   └── test
│       ├── java
│       │   └── life
│       │       └── qbic
│       │           └── cli
│       │               ├── SampleIntegrationTest.java
│       │               └── SampleTest.java
│       └── resources
│           ├── log4j2.xml
│           └── tool.properties
├── .travis.settings.xml
└── .travis.yml

If you are unfamiliar with specific files/file types, you may find them in our Newbie Guide to QBiC software.

Included frameworks/libraries

  1. Like all of QBiC’s JVM based projects, cli-java uses QBiC’s parent-pom.

  2. cli-java uses picocli to expose the commandline parameters to the user.

  3. junit4 is currently QBiC’s testing framework of choice. If you require mocking for any integration tests or advanced command line tests, Mockito may be useful.

  4. Preconfigured ReadTheDocs.

  5. Four Github workflows are shipped with the template

    1. build_docs.yml, which builds the ReadTheDocs documentation.

    2. build_package.yml, which builds the Maven based project.

    3. java_checkstyle.yml, which runs Checkstyle using Google’s Styleguides.

    4. run_test.yml, which runs all junit4 tests.

    5. qube_lint.yml, which runs QUBE’s linting on the project.

    6. pr_to_master_from_development_only.yml which fails if the PR does not come from a release or hotfix branch

Usage

The main Maven commands such as mvn test, mvn verify, mvn package and more are used to test and package cli-java based projects.

gui-java

Purpose

gui-java is QBiC’s choice for all templates, which require a Desktop user interface. Hence, the application is not necessarily on the web.
The GUI framework of choice is JavaFX 8. Be aware that most of the documentation has already moved past version 8.

Design

gui-java follows the standard Maven project layout.

├── AUTHORS.rst
├── CHANGELOG.rst
├── CODEOFCONDUCT.rst
├── .dependabot
│   └── config.yml
├── docs
│   ├── authors.rst
│   ├── changelog.rst
│   ├── codeofconduct.rst
│   ├── conf.py
│   ├── index.rst
│   ├── installation.rst
│   ├── make.bat
│   ├── Makefile
│   ├── readme.rst
│   ├── requirements.txt
│   └── usage.rst
├── .github
│   ├── ISSUE_TEMPLATE
│   │   ├── bug_report.md
│   │   ├── feature_request.md
│   │   └── general_question.md
│   ├── pull_request_template.md
│   └── workflows
│       ├── build_docs.yml
│       ├── build_package.yml
│       ├── java_checkstyle.yml
│       └── run_tests.yml
├── .gitignore
├── LICENSE
├── pom.xml
├── qube.cfg
├── .qube.yml
├── README.rst
├── .readthedocs.yml
├── src
│   ├── main
│   │   ├── java
│   │   │   └── life
│   │   │       └── qbic
│   │   │           └── gui
│   │   │               ├── SampleApplication.java
│   │   │               ├── SampleCommand.java
│   │   │               └── SampleEntryPoint.java
│   │   └── resources
│   │       ├── log4j2.xml
│   │       └── tool.properties
│   └── test
│       ├── java
│       │   └── life
│       │       └── qbic
│       │           └── gui
│       │               ├── SampleIntegrationTest.java
│       │               └── SampleTest.java
│       └── resources
│           ├── log4j2.xml
│           └── tool.properties
├── .travis.settings.xml
└── .travis.yml

If you are unfamiliar with specific files/file types, you may find them in our Newbie Guide to QBiC software.

Included frameworks/libraries

  1. Like all of QBiC’s JVM based projects, lib-java uses QBiC’s parent-pom.

  2. gui-java uses JavaFX 8 to build the graphical user interface.

  3. junit4 is currently QBiC’s testing framework of choice. If you require mocking for any integration tests or advanced command line tests, Mockito may be useful.

  4. Preconfigured ReadTheDocs.

  5. Four Github workflows are shipped with the template

    1. build_docs.yml, which builds the ReadTheDocs documentation.

    2. build_package.yml, which builds the Maven based project.

    3. java_checkstyle.yml, which runs Checkstyle using Google’s Styleguides.

    4. run_test.yml, which runs all junit4 tests.

    5. qube_lint.yml, which runs QUBE’s linting on the project.

    6. pr_to_master_from_development_only.yml which fails if the PR does not come from a release or hotfix branch

Usage

The main Maven commands such as mvn test, mvn verify, mvn package and more are used to test and package cli-java based projects.

lib-java

Purpose

cli-lib is by design more open end than the other templates. The goal of a cli-lib project is not to be run as a standalone, but rather to be included as a library in other JVM based projects.

Design

lib-java follows the standard Maven project layout.

├── AUTHORS.rst
├── CHANGELOG.rst
├── CODEOFCONDUCT.rst
├── .dependabot
│   └── config.yml
├── docs
│   ├── authors.rst
│   ├── changelog.rst
│   ├── codeofconduct.rst
│   ├── conf.py
│   ├── index.rst
│   ├── installation.rst
│   ├── make.bat
│   ├── Makefile
│   ├── readme.rst
│   ├── requirements.txt
│   └── usage.rst
├── .github
│   ├── ISSUE_TEMPLATE
│   │   ├── bug_report.md
│   │   ├── feature_request.md
│   │   └── general_question.md
│   ├── pull_request_template.md
│   └── workflows
│       ├── build_docs.yml
│       ├── build_package.yml
│       ├── java_checkstyle.yml
│       └── run_tests.yml
├── .gitignore
├── LICENSE
├── pom.xml
├── qube.cfg
├── .qube.yml
├── README.rst
├── .readthedocs.yml
├── src
│   ├── main
│   │   ├── java
│   │   │   └── life
│   │   │       └── qbic
│   │   │           └── package-info.java
│   │   └── resources
│   │       └── .gitignore
│   └── test
│       ├── java
│       │   └── life
│       │       └── qbic
│       │           └── package-info.java
│       └── resources
│           └── log4j2.xml
├── .travis.settings.xml
└── .travis.yml

If you are unfamiliar with specific files/file types, you may find them in our Newbie Guide to QBiC software.

Included frameworks/libraries

  1. Like all of QBiC’s JVM based projects, lib-java uses QBiC’s parent-pom.

  2. junit4 is currently QBiC’s testing framework of choice. If you require mocking for any integration tests or advanced command line tests, Mockito may be useful.

  3. Preconfigured ReadTheDocs.

  4. Four Github workflows are shipped with the template

    1. build_docs.yml, which builds the ReadTheDocs documentation.

    2. build_package.yml, which builds the Maven based project.

    3. java_checkstyle.yml, which runs Checkstyle using Google’s Styleguides.

    4. run_test.yml, which runs all junit4 tests.

    5. qube_lint.yml, which runs QUBE’s linting on the project.

    6. pr_to_master_from_development_only.yml which fails if the PR does not come from a release or hotfix branch

Usage

The main Maven commands such as mvn test, mvn verify, mvn package and more are used to test and package cli-java based projects.

lib-groovy

Purpose

lib-groovy is by design more open end than the other templates. The goal of a cli-lib project is not to be run as a standalone, but rather to be included as a library in other JVM based projects.

Design

lib-groovy follows the standard Maven project layout.

├── AUTHORS.rst
├── CHANGELOG.rst
├── CODEOFCONDUCT.rst
├── .dependabot
│   └── config.yml
├── docs
│   ├── authors.rst
│   ├── changelog.rst
│   ├── codeofconduct.rst
│   ├── conf.py
│   ├── index.rst
│   ├── installation.rst
│   ├── make.bat
│   ├── Makefile
│   ├── readme.rst
│   ├── requirements.txt
│   └── usage.rst
├── .github
│   ├── ISSUE_TEMPLATE
│   │   ├── bug_report.md
│   │   ├── feature_request.md
│   │   └── general_question.md
│   ├── pull_request_template.md
│   └── workflows
│       ├── build_docs.yml
│       ├── build_package.yml
│       ├── java_checkstyle.yml
│       └── run_tests.yml
├── .gitignore
├── LICENSE
├── pom.xml
├── qube.cfg
├── .qube.yml
├── README.rst
├── .readthedocs.yml
├── src
│   ├── main
│   │   ├── groovy
│   │   │   └── life
│   │   │       └── qbic
│   │   │           └── package-info.java
│   │   └── resources
│   │       └── .gitignore
│   └── test
│       ├── groovy
│       │   └── life
│       │       └── qbic
│       │           └── package-info.java
│       └── resources
│           └── log4j2.xml
├── .travis.settings.xml
└── .travis.yml

If you are unfamiliar with specific files/file types, you may find them in our Newbie Guide to QBiC software.

Included frameworks/libraries

  1. Unlike all of QBiC’s JVM based projects, lib-groovy does not use QBiC’s parent-pom for now.

  2. spock is currently QBiC’s testing framework of choice. If you require mocking for any integration tests or advanced command line tests, Mockito may be useful.

  3. Preconfigured ReadTheDocs.

  4. Four Github workflows are shipped with the template

    1. build_docs.yml, which builds the ReadTheDocs documentation.

    2. build_package.yml, which builds the Maven based project.

    3. java_checkstyle.yml, which runs Checkstyle using Google’s Styleguides.

    4. run_test.yml, which runs all junit4 tests.

    5. qube_lint.yml, which runs QUBE’s linting on the project.

    6. pr_to_master_from_development_only.yml which fails if the PR does not come from a release or hotfix branch

Usage

The main Maven commands such as mvn test, mvn verify, mvn package and more are used to test and package cli-groovy based projects.

service-java

Purpose

service-java is a base template for services, which are similar to commandline tools, but stay active until shutdown.

Design

service-java follows the standard Maven project layout.

├── AUTHORS.rst
├── CHANGELOG.rst
├── CODEOFCONDUCT.rst
├── .dependabot
│   └── config.yml
├── docs
│   ├── authors.rst
│   ├── changelog.rst
│   ├── codeofconduct.rst
│   ├── conf.py
│   ├── index.rst
│   ├── installation.rst
│   ├── make.bat
│   ├── Makefile
│   ├── readme.rst
│   ├── requirements.txt
│   └── usage.rst
├── .github
│   ├── ISSUE_TEMPLATE
│   │   ├── bug_report.md
│   │   ├── feature_request.md
│   │   └── general_question.md
│   ├── pull_request_template.md
│   └── workflows
│       ├── build_docs.yml
│       ├── build_package.yml
│       ├── java_checkstyle.yml
│       └── run_tests.yml
├── .gitignore
├── LICENSE
├── pom.xml
├── qube.cfg
├── .qube.yml
├── README.rst
├── .readthedocs.yml
├── src
│   ├── main
│   │   ├── java
│   │   │   └── life
│   │   │       └── qbic
│   │   │           └── gui
│   │   │               ├── SampleApplication.java
│   │   │               ├── SampleCommand.java
│   │   │               └── SampleEntryPoint.java
│   │   └── resources
│   │       ├── log4j2.xml
│   │       └── tool.properties
│   └── test
│       ├── java
│       │   └── life
│       │       └── qbic
│       │           └── gui
│       │               ├── SampleIntegrationTest.java
│       │               └── SampleTest.java
│       └── resources
│           ├── log4j2.xml
│           └── tool.properties
├── .travis.settings.xml
└── .travis.yml

If you are unfamiliar with specific files/file types, you may find them in our Newbie Guide to QBiC software.

Included frameworks/libraries

  1. Like all of QBiC’s JVM based projects, lib-java uses QBiC’s parent-pom.

  2. junit4 is currently QBiC’s testing framework of choice. If you require mocking for any integration tests or advanced command line tests, Mockito may be useful.

  3. Preconfigured ReadTheDocs.

  4. Four Github workflows are shipped with the template

    1. build_docs.yml, which builds the ReadTheDocs documentation.

    2. build_package.yml, which builds the Maven based project.

    3. java_checkstyle.yml, which runs Checkstyle using Google’s Styleguides.

    4. run_test.yml, which runs all junit4 tests.

    5. qube_lint.yml, which runs QUBE’s linting on the project.

    6. pr_to_master_from_development_only.yml which fails if the PR does not come from a release or hotfix branch

Usage

The main Maven commands such as mvn test, mvn verify, mvn package and more are used to test and package cli-java based projects.

portlet-groovy

Purpose

portlet-groovy is QBiC’s template for portlets. Portlets are pluggable user interface software components, which are managed and displayed in a web portal.
They are a major part of QBIC’s web presence.

Design

portlet-groovy follows the standard Maven project layout.

├── AUTHORS.rst
├── CHANGELOG.rst
├── CODEOFCONDUCT.rst
├── .dependabot
│   └── config.yml
├── docs
│   ├── authors.rst
│   ├── changelog.rst
│   ├── codeofconduct.rst
│   ├── conf.py
│   ├── index.rst
│   ├── installation.rst
│   ├── make.bat
│   ├── Makefile
│   ├── readme.rst
│   ├── requirements.txt
│   └── usage.rst
├── .github
│   ├── ISSUE_TEMPLATE
│   │   ├── bug_report.md
│   │   ├── feature_request.md
│   │   └── general_question.md
│   ├── pull_request_template.md
│   └── workflows
│       ├── build_docs.yml
│       ├── build_package.yml
│       ├── groovy_checkstyle.yml
│       └── run_tests.yml
├── .gitignore
├── LICENSE
├── pom.xml
├── qube.cfg
├── .qube.yml
├── README.rst
├── .readthedocs.yml
├── src
│   ├── main
│   │   ├── groovy
│   │   │   └── life.qbic.portal.portlet
│   │   │       └── SamplePortlet.groovy
│   │   ├── resources
│   │   │   ├── developer.properties.example
│   │   │   ├── .gitignore
│   │   │   ├── life
│   │   │   │   └── qbic
│   │   │   │       └── portal
│   │   │   │           └── portlet
│   │   │   │               └── AppWidgetSet.gwt.xml
│   │   │   ├── log4j2.xml
│   │   │   └── portlet.properties
│   │   └── webapp
│   │       ├── VAADIN
│   │       │   └── themes
│   │       │       └── mytheme
│   │       │           ├── addons.scss
│   │       │           ├── mytheme.scss
│   │       │           ├── styles.css
│   │       │           └── styles.scss
│   │       └── WEB-INF
│   │           ├── liferay-display.xml
│   │           ├── liferay-plugin-package.properties
│   │           ├── liferay-portlet.xml
│   │           ├── portlet.xml
│   │           └── web.xml
│   └── test
│       ├── java
│       │   └── life
│       │       └── qbic
│       │           └── portal
│       │               └── portlet
│       │                   ├── SamplePortletIntegrationTest.java
│       │                   └── SamplePortletTest.java
│       └── resources
│           ├── log4j2.xml
│           └── portlet.properties
├── .travis.settings.xml
└── .travis.yml

If you are unfamiliar with specific files/file types, you may find them in our Newbie Guide to QBiC software.

Included frameworks/libraries

During the creation you will be asked whether or not you want to use the

  1. openbis client. This will include the openbis-client-lib in your project.

  2. openbis raw api. This will include the openbis-api in your project.

  3. qbic databases. This will include the mariadb-java-client in your project.

  4. vaadin charts. This will include the vaadin-charts in your project.

  1. Like all of QBiC’s JVM based projects, lib-java uses QBiC’s parent-pom.

  2. junit4 is currently QBiC’s testing framework of choice. If you require mocking for any integration tests or advanced command line tests, Mockito may be useful.

  3. Preconfigured ReadTheDocs.

  4. Three Github workflows are shipped with the template

    1. build_docs.yml, which builds the ReadTheDocs documentation.

    2. groovy_checkstyle.yml, which runs npm-groovy-lint, which can be seen as a wrapper around CodeNarc.

    3. run_test.yml, which runs all junit4 tests.

    4. qube_lint.yml, which runs QUBE’s linting on the project.

    5. pr_to_master_from_development_only.yml which fails iif the PR does not come from a release or hotfix branch

Usage

The main Maven commands such as mvn test, mvn verify, mvn package and more are used to test and package cli-java based projects.

portlet-groovy-osgi

Purpose

portlet-groovy-osgi is QBiC’s template for portlets. Portlets are pluggable user interface software components, which are managed and displayed in a web portal.
They are a major part of QBIC’s web presence.
The portlet is OSGi ready. The framework, into which the portlet is plugged, is independent of the portlet that is added and makes it more robust to changes.

Design

portlet-groovy-osgi follows the standard Maven project layout.

├── AUTHORS.rst
├── CHANGELOG.rst
├── CODEOFCONDUCT.rst
├── .dependabot
│   └── config.yml
├── docs
│   ├── authors.rst
│   ├── changelog.rst
│   ├── codeofconduct.rst
│   ├── conf.py
│   ├── index.rst
│   ├── installation.rst
│   ├── make.bat
│   ├── Makefile
│   ├── readme.rst
│   ├── requirements.txt
│   └── usage.rst
├── .github
│   ├── ISSUE_TEMPLATE
│   │   ├── bug_report.md
│   │   ├── feature_request.md
│   │   └── general_question.md
│   ├── pull_request_template.md
│   └── workflows
│       ├── build_docs.yml
│       ├── build_package.yml
│       ├── groovy_checkstyle.yml
│       └── run_tests.yml
├── .gitignore
├── LICENSE
├── pom.xml
├── qube.cfg
├── .qube.yml
├── README.rst
├── .readthedocs.yml
├── src
│   ├── main
│   │   ├── groovy
│   │   │   └── life.qbic.portal.portlet
│   │   │       └── AppTheme.groovy
│   │   │       └── SamplePortletUI.groovy
│   │   ├── resources
│   │   │   ├── developer.properties.example
│   │   │   ├── .gitignore
│   │   │   ├── life
│   │   │   │   └── qbic
│   │   │   │       └── portal
│   │   │   │           └── portlet
│   │   │   │               └── AppWidgetSet.gwt.xml
│   │   │   ├── log4j2.xml
│   │   │   └── portlet.properties
│   │   └── webapp
│   │       ├── VAADIN
│   │       │   └── themes
│   │       │       └── mytheme
│   │       │           ├── addons.scss
│   │       │           ├── mytheme.scss
│   │       │           ├── styles.css
│   │       │           └── styles.scss
│   │       └── WEB-INF
│   │           ├── liferay-display.xml
│   │           ├── liferay-plugin-package.properties
│   │           ├── liferay-portlet.xml
│   │           ├── portlet.xml
│   │           └── web.xml
│   └── test
│       ├── java
│       │   └── life
│       │       └── qbic
│       │           └── portal
│       │               └── portlet
│       │                   ├── SamplePortletIntegrationTest.java
│       │                   └── SamplePortletTest.java
│       └── resources
│           ├── log4j2.xml
│           └── portlet.properties
├── .travis.settings.xml
└── .travis.yml

If you are unfamiliar with specific files/file types, you may find them in our Newbie Guide to QBiC software.

Included frameworks/libraries

During the creation you will be asked whether or not you want to use the

  1. openbis client. This will include the openbis-client-lib in your project.

  2. openbis raw api. This will include the openbis-api in your project.

  3. qbic databases. This will include the mariadb-java-client in your project.

  4. vaadin charts. This will include the vaadin-charts in your project.

  1. Like all of QBiC’s JVM based projects, lib-java uses QBiC’s parent-pom.

  2. spock is currently QBiC’s testing framework of choice. If you require mocking for any integration tests or advanced command line tests, Mockito may be useful.

  3. Preconfigured ReadTheDocs.

  4. Three Github workflows are shipped with the template

    1. build_docs.yml, which builds the ReadTheDocs documentation.

    2. groovy_checkstyle.yml, which runs npm-groovy-lint, which can be seen as a wrapper around CodeNarc.

    3. run_test.yml, which runs all junit4 tests.

    4. qube_lint.yml, which runs QUBE’s linting on the project.

    5. pr_to_master_from_development_only.yml which fails if the PR does not come from a release or hotfix branch

Usage

The main Maven commands such as mvn test, mvn verify, mvn package and more are used to test and package cli-java based projects.

Shared FAQ

How do I setup Read the Docs?

qube ships with a full, production ready Read the Docs setup. You need to import your documentation on Read the Docs website. Do not forget to sync your account first to see your repository.

What is Dependabot and how do I set it up?

Dependabot is a service, which (for supported languages) automatically submits pull requests for dependency updates. qube templates ship with dependabot configurations, if the language is supported by Dependabot. To enable Dependabot you need to login (with your Github account) and add your repository (or enable Dependabot for all repositories). Note that you need to do this for every organization separately. Dependabot will then pick up the configuration and start submitting pull requests!

How do I add a new template?

Please follow Adding new templates.