Parent POM

The starter app parent POM is provided as a convenience to act as the <parent> for Apache Isis applications. It builds upon a similar POM provided by the Spring Boot framework, which ensures a consistent set of dependencies, as well as configuring various build plugins.

Usage

To use it, just add:

pom.xml
<parent>
    <groupId>org.apache.isis.app</groupId>
    <artifactId>isis-app-starter-parent</artifactId>
    <version>2.0.0</version>                            (1)
</parent>
1 update as required for new versions of the framework.

You’ll see that it is used by both the HelloWorld and SimpleApp starter apps.

Relationship to other POMs

The diagram below (PPT) below shows how the parent POM relates to other POMs:

parent pom

As the diagram shows, the parent POM inherits two Spring Boot parent POMs: directly from org.springframework.boot:spring-boot-starter-parent, and transitively inherits from org.springframework.boot:spring-boot-dependencies.

  • spring-boot-starter-parent configures various <build>/<plugins> and <resources>, while

  • spring-boot-dependencies the second defines numerous xxx.version properties for various third party applications (validated as being compatible with each other by the Spring Boot team), and sets up corresponding <dependencyManagement>/<dependencies>.

The parent POM also import (using scope=import, type=pom) each of the "bill of material" POMs provided by Apache Isis framework:

  • org.apache.isis.core:isis -

    The two core modules most commonly referenced by domain applications are o.a.i.core:isis-applib and o.a.i.core:isis-schema.

  • o.a.i.testing:isis-testing

    For the isis-testing-xxx modules (fixture scripts, unit test support, integ test support etc)

  • o.a.i.extensions:isis-extensions

  • o.a.i.subdomains:isis-subdomains

  • o.a.i.mappings:isis-mappings

  • o.a.i.valuetypes:isis-valuetypes

  • o.a.i.incubator:isis-incubator

  • o.a.i.legacy:isis-legacy

These all set up <dependencyManagement>/<dependencies> entries for all of the modules, meaning that there’s only one place to update the version to Apache Isis (the reference to the parent POM).