Aggregator POMs

The framework provides a number of "aggregator" POMs that act as a convenient way to aggregate together various common dependencies.

For example, when writing unit tests for your domain app, it can simply depend on the isis-mavendeps-unittests artifact (rather than have to reference all of JUnit, AssertJ, Spring Boot, Hamcrest, Mockito and so on).

Currently five aggregator POMs are provided.

Webapp

The isis-mavendeps-webapp aggregates the main runtime dependencies of a production webapp.

To use, add the following :

pom.xml
<dependencies>
    <dependency>
        <groupId>org.apache.isis.mavendeps</groupId>
        <artifactId>isis-mavendeps-webapp</artifactId>
        <type>pom</type>
    </dependency>
</dependencies>

For convenience, it includes all of the current components available:

If you don’t need any of these (for example, you’ll probably only want one security implementation), then you can exclude the others.

Also, remember that adding the class onto the classpath does not make that functionality available (Apache Isis does not currently leverage Spring Boot’s auto configuration capabilities). So, you must also add in the appropriate IsisModuleXxx to your application’s top-level @Configuration (aka "app manifest"). For example, see the AppManifest for the SimpleApp starter app.

Testing and BDD Specs

Three aggregator POMs are provided to support unit testing, integ testing or running BDD (Cucumber) specs.

To use them when unit testing, add:

pom.xml
<dependencies>
    <dependency>
        <groupId>org.apache.isis.mavendeps</groupId>
        <artifactId>isis-mavendeps-unittests</artifactId>
        <type>pom</type>
        <scope>test</scope>
    </dependency>
</dependencies>

For integration testing, add:

pom.xml
<dependencies>
    <dependency>
        <groupId>org.apache.isis.mavendeps</groupId>
        <artifactId>isis-mavendeps-integtests</artifactId>
        <type>pom</type>
        <scope>test</scope>
    </dependency>
</dependencies>

For BDD (Cucumber) specs, within an integration testing context:

pom.xml
<dependencies>
    <dependency>
        <groupId>org.apache.isis.mavendeps</groupId>
        <artifactId>isis-mavendeps-integspecs</artifactId>
        <type>pom</type>
        <scope>test</scope>
    </dependency>
</dependencies>

The table below summarises the dependencies that each of these aggregator POMs brings in.

Table 1. Dependencies of the Aggregator POM for Tests/Specs
Dependency mavendeps- unittests mavendeps- integtests mavendeps- integspecs

Apache Isis' own unit test support
with JMock2 extensions to mock classes

Y

Apache Isis' own integ test support

Y

Y

Apache Isis' own BDD spec support

Y

Y

Y

Y

Y

Y

Y

Y

Hamcrest (core + library)

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

PicoContainer
(for JMock2 extensions)

Y

Apache Isis Applib

Y

Y

Y

Apache Isis Runtime Services

Y

Y

Apache Isis Bypass security

Y

Y

Apache Isis JDO/DataNucleus

Y

Y

Apache Isis Fake Data

Y

Y

Y

Apache Isis Fixture Scripts

Y

Y

Y

Y

Y

Y

Y

jdk11

While Apache Isis v2 will run happily on Java 8, it is of course also possible to it on later versions.

However, between Java 8 and Java 11 a number of packages related to JavaEE were removed from the JRE, but these packages are used by the framework, specifically

  • JAX-WS packages (javax.jws, javax.jws.soap, javax.xml.soap, and javax.xml.ws.*)

  • JAXB packages (javax.xml.bind.*)

So, if you do want to run your Apache Isis application on Java 11 or later, then these dependencies need to be added in.

All you need to do is include this dependency in the webapp module:

To use, add the following :

pom.xml
<dependencies>
    <dependency>
        <groupId>org.apache.isis.mavendeps</groupId>
        <artifactId>isis-mavendeps-jdk11</artifactId>
        <type>pom</type>
    </dependency>
</dependencies>

If you are running on JDK11, then this will activate a profile to bring in the missing packages. Otherwise it will be ignored.

For more on this topic, see: