maven-parentpom
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency>
<groupId>fr.ebruno.maven.poms</groupId>
<artifactId>maven-parentpom</artifactId>
<version>0.1.19</version>
</dependency><?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- The Basics -->
<groupId>fr.ebruno.maven.poms</groupId>
<artifactId>maven-parentpom</artifactId>
<version>0.1.19</version>
<packaging>pom</packaging>
<properties>
<!-- These two properties should be override in subprojects -->
<github.account>ebpro</github.account>
<app.main.class />
<!-- GitHub server corresponds to entry in ~/.m2/settings.xml -->
<github.global.server>github</github.global.server>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- Java version -->
<java.version>21</java.version>
<maven.compiler.release>${java.version}</maven.compiler.release>
<maven.version>3.9.8</maven.version>
<!-- still needed for sonar -->
<maven.compiler.source>${maven.compiler.release}</maven.compiler.source>
<maven.compiler.target>${maven.compiler.release}</maven.compiler.target>
<!-- Test -->
<junit.version>5.10.3</junit.version>
<hamcrest.version>3.0</hamcrest.version>
<mockito.version>5.12.0</mockito.version>
<arquillian.version>1.9.1.Final</arquillian.version>
<version.arquillian_cube>1.18.2</version.arquillian_cube>
<jsonassert.version>1.5.3</jsonassert.version>
<awaitility.version>4.2.2</awaitility.version>
<rest-assured.version>5.5.0</rest-assured.version>
<testcontainers.version>1.20.1</testcontainers.version>
<assertj.version>3.26.3</assertj.version>
<!-- Persistence -->
<jakarta.persistence.version>3.2.0</jakarta.persistence.version>
<eclipselink.version>4.0.4</eclipselink.version>
<hibernate.version>6.6.0.Final</hibernate.version>
<!-- Utils -->
<lombok.version>1.18.34</lombok.version>
<eclipsecollections.version>11.1.0</eclipsecollections.version>
<throwing-function.version>1.5.1</throwing-function.version>
<!-- Log -->
<sl4j.version>2.0.16</sl4j.version>
<logback.version>1.5.6</logback.version>
<!-- Databases -->
<h2.version>2.3.232</h2.version>
<postgresql.version>42.7.3</postgresql.version>
<mysql.version>8.0.33</mysql.version>
<!-- JSON -->
<jackson.version>2.17.2</jackson.version>
<!-- XML -->
<jaxb.version>4.0.2</jaxb.version>
<jaxbimpl.version>4.0.5</jaxbimpl.version>
<!-- REST - JAXRS -->
<jaxrs.version>4.0.0</jaxrs.version>
<jersey.version>3.1.8</jersey.version>
<jersey-client.version>3.1.8</jersey-client.version>
<jjwt.version>0.12.6</jjwt.version>
<!-- WebSocket -->
<tyrus.version>2.2.0</tyrus.version>
<!-- Reproducibility -->
<!-- see https://maven.apache.org/guides/mini/guide-reproducible-builds -->
<project.build.outputTimestamp>1723828382</project.build.outputTimestamp>
<!-- Java Module (Jigsaw) Name -->
<project.module>${project.groupId}.${project.artifactId}</project.module>
<!-- JEE -->
<el.version>4.0.2</el.version>
<beanvalidation.version>3.0.0</beanvalidation.version>
<hibernate-validator.version>8.0.1.Final</hibernate-validator.version>
<!-- Jakarta EE API 10 with Java 17 -->
<jakarta.jakartaee-api.version>10.0.0</jakarta.jakartaee-api.version>
<!-- Payara JEE server -->
<payara.version>6.2023.11</payara.version>
<arquillian-payara.version>3.0.alpha8</arquillian-payara.version>
<maven-war-plugin.version>3.4.0</maven-war-plugin.version>
<maven-ejb-plugin.version>3.2.1</maven-ejb-plugin.version>
<maven-ear-plugin.version>3.3.0</maven-ear-plugin.version>
<!-- JSF -->
<primefaces.version>14.0.4</primefaces.version>
<all-themes.version>1.0.11</all-themes.version>
<!-- Code coverage -->
<jacoco.version>0.8.10</jacoco.version>
<!-- SonarQube -->
<sonarqube.version>4.0.0.4121</sonarqube.version>
<sonarqualitygate.version>1.3.0</sonarqualitygate.version>
<!-- GPG Signing -->
<simplify4usign.version>1.0.1</simplify4usign.version>
<!-- Maven Plugins -->
<mavencompiler.version>3.13.0</mavencompiler.version>
<mavensource.version>3.3.1</mavensource.version>
<mavenclean.version>3.4.0</mavenclean.version>
<mavenjar.version>3.4.2</mavenjar.version>
<mavenresource.version>3.3.1</mavenresource.version>
<maveninstall.version>3.1.2</maveninstall.version>
<mavenarchetype.version>3.2.1</mavenarchetype.version>
<mavenjavadoc.version>3.5.0</mavenjavadoc.version>
<mavendeploy.version>3.1.2</mavendeploy.version>
<mavensurefire.version>3.3.1</mavensurefire.version>
<mavensurefirereport.version>3.3.1</mavensurefirereport.version>
<mavenfailsafe.version>3.3.1</mavenfailsafe.version>
<mavensite.version>3.12.1</mavensite.version>
<mavenexec.version>3.4.1</mavenexec.version>
<mavenshade.version>3.6.0</mavenshade.version>
<mavenassembly.version>3.7.1</mavenassembly.version>
<mavenscm.version>3.3.0</mavenscm.version>
<mavendependency.version>3.7.1</mavendependency.version>
<mavenrelease.version>3.1.1</mavenrelease.version>
<mavenhelper.version>3.6.0</mavenhelper.version>
<mavenhelp.version>3.4.1</mavenhelp.version>
<mavenversions.version>2.17.1</mavenversions.version>
<mavenenforcer.version>3.5.0</mavenenforcer.version>
<mavenflatten.version>1.6.0</mavenflatten.version>
<maveninforeport.version>3.6.2</maveninforeport.version>
<mavenjavadoc.version>3.8.0</mavenjavadoc.version>
<!-- Release-->
<nexusstaging.version>1.7.0</nexusstaging.version>
<!-- Final app Packaging -->
<mavengrallvm.version>0.9.26</mavengrallvm.version>
<mavenjigsaw.version>1.1.3</mavenjigsaw.version>
<!-- Continuous integration -->
<gitflow-maven-plugin.version>1.21.0</gitflow-maven-plugin.version>
<keytool-maven-plugin.version>1.7</keytool-maven-plugin.version>
<testcontainers.postgresql.version>1.20.1</testcontainers.postgresql.version>
<arquillian-weld-embedded.version>4.0.0.Final</arquillian-weld-embedded.version>
<weld-se-core.version>5.1.2.Final</weld-se-core.version>
<hibernate-entitymanager.version>5.6.15.Final</hibernate-entitymanager.version>
<hibernate-c3p0.version>6.6.0.Final</hibernate-c3p0.version>
<c3p0.version>0.10.1</c3p0.version>
</properties>
<!-- More Project Information -->
<name>Parent POM</name>
<description>A parent POM for Java CI projects</description>
<url>
https://${github.account}.github.io/${project.artifactId}/
</url>
<inceptionYear>2020</inceptionYear>
<licenses>
<license>
<name>MIT License</name>
<url>https://opensource.org/licenses/MIT</url>
<distribution>repo</distribution>
</license>
</licenses>
<organization>
<name>Université de Toulon</name>
<url>https://www.univ-tln.fr</url>
</organization>
<developers>
<developer>
<id>emmanuelbruno</id>
<name>Emmanuel Bruno</name>
<email>emmanuel.bruno@univ-tln.fr</email>
<url>https://bruno.univ-tln.fr</url>
<organization>Université de Toulon</organization>
<organizationUrl>https://www.univ-tln.fr</organizationUrl>
<roles>
<role>architect</role>
<role>developer</role>
</roles>
<timezone>Europe/Paris</timezone>
</developer>
</developers>
<!-- Environment Settings -->
<issueManagement>
<system>GitHub</system>
<url>https://github.com/${github.account}/${project.artifactId}/issues</url>
</issueManagement>
<ciManagement>
<system>Github Actions</system>
<url>https://github.com/${github.account}/${project.artifactId}/actions</url>
</ciManagement>
<scm>
<url>https://github.com/${github.account}/${project.artifactId}/tree/${project.scm.tag}</url>
<connection>scm:git:git@github.com:${github.account}/${project.artifactId}.git</connection>
<developerConnection>scm:git:git@github.com:${github.account}/${project.artifactId}.git</developerConnection>
</scm>
<distributionManagement>
<site>
<id>site</id>
<url>file:///tmp/site/staging</url>
</site>
</distributionManagement>
<!--distributionManagement>
<site>
<id>githubpages</id>
<url>scm:git:ssh://git@github.com/${github.account}/${project.artifactId}.git</url>
</site>
</distributionManagement-->
<dependencyManagement>
<dependencies>
<!-- TODO CHECK -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.jakarta.rs</groupId>
<artifactId>jackson-jakarta-rs-json-provider</artifactId>
<version>${jackson.version}</version>
</dependency>
<!-- Unit tests -->
<!-- Junit 5 https://junit.org/junit5/docs/current/user-guide/ -->
<dependency>
<groupId>org.junit</groupId>
<artifactId>junit-bom</artifactId>
<version>${junit.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--AssertJ -->
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>${assertj.version}</version>
<scope>test</scope>
</dependency>
<!-- Mockito https://site.mockito.org/ -->
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>${mockito.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<version>${mockito.version}</version>
<scope>test</scope>
</dependency>
<!-- JSON Assert https://github.com/skyscreamer/JSONassert-->
<dependency>
<groupId>org.skyscreamer</groupId>
<artifactId>jsonassert</artifactId>
<version>${jsonassert.version}</version>
<scope>test</scope>
</dependency>
<!-- Awaitibility http://www.awaitility.org/ -->
<dependency>
<groupId>org.awaitility</groupId>
<artifactId>awaitility</artifactId>
<version>${awaitility.version}</version>
<scope>test</scope>
</dependency>
<!-- Light tests of CDI beans -->
<dependency>
<groupId>org.jboss.arquillian.container</groupId>
<artifactId>arquillian-weld-embedded</artifactId>
<version>${arquillian-weld-embedded.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jboss.weld.se</groupId>
<artifactId>weld-se-core</artifactId>
<version>${weld-se-core.version}</version>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<version>${rest-assured.version}</version>
<scope>test</scope>
</dependency>
<!-- Arquillian http://arquillian.org/arquillian-core/ -->
<dependency>
<groupId>org.jboss.arquillian</groupId>
<artifactId>arquillian-bom</artifactId>
<version>${arquillian.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.arquillian.cube</groupId>
<artifactId>arquillian-cube-bom</artifactId>
<version>${version.arquillian_cube}</version>
<scope>import</scope>
<type>pom</type>
</dependency>
<!-- Add the following in the project -->
<!--dependency>
<groupId>org.jboss.arquillian.junit5</groupId>
<artifactId>arquillian-junit5-container</artifactId>
<scope>test</scope>
</dependency-->
<!-- Utilities test functions in unit tests -->
<!-- Hamcrest Matchers http://hamcrest.org/JavaHamcrest/tutorial -->
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest</artifactId>
<version>${hamcrest.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-library</artifactId>
<version>${hamcrest.version}</version>
<scope>test</scope>
</dependency>
<!-- Test containers -->
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>testcontainers-bom</artifactId>
<version>${testcontainers.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>postgresql</artifactId>
<version>${testcontainers.postgresql.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>junit-jupiter</artifactId>
<version>${testcontainers.version}</version>
<scope>test</scope>
</dependency>
<!-- Lombok -->
<!--
https://objectcomputing.com/resources/publications/sett/january-2010-reducing-boilerplate-code-with-project-lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<scope>provided</scope> <!-- trouble with javadoc ??? -->
</dependency>
<!-- Eclipse Collections https://www.eclipse.org/collections/-->
<dependency>
<groupId>org.eclipse.collections</groupId>
<artifactId>eclipse-collections</artifactId>
<version>${eclipsecollections.version}</version>
</dependency>
<!-- Runtime exception wrapper (for lambdas) -->
<dependency>
<groupId>com.pivovarit</groupId>
<artifactId>throwing-function</artifactId>
<version>${throwing-function.version}</version>
</dependency>
<!-- Databases connections -->
<!-- JDBC -->
<!-- H2 https://www.h2database.com -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>${h2.version}</version>
</dependency>
<!-- Postgres https://jdbc.postgresql.org/ -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>${postgresql.version}</version>
</dependency>
<!-- MySQL https://dev.mysql.com/doc/connector-j/8.0/en/ -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!-- Connection pool -->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>${c3p0.version}</version>
</dependency>
<!-- Jakarta Persistence (ex JPA)
https://jakarta.ee/specifications/persistence/3.0/jakarta-persistence-spec-3.0.html -->
<dependency>
<groupId>jakarta.persistence</groupId>
<artifactId>jakarta.persistence-api</artifactId>
<version>${jakarta.persistence.version}</version>
</dependency>
<!-- EclipseLink https://www.eclipse.org/eclipselink/ -->
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>${eclipselink.version}</version>
</dependency>
<!-- Hibernate https://hibernate.org/orm/ -->
<!--dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
<scope>compile</scope>
</dependency-->
<dependency>
<groupId>org.hibernate.orm</groupId>
<artifactId>hibernate-platform</artifactId>
<version>${hibernate.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>${hibernate-c3p0.version}</version>
</dependency>
<!-- Java/XML Mapping -->
<!-- JAXB
https://jakarta.ee/specifications/xml-binding/3.0/jakarta-xml-binding-spec-3.0.html -->
<dependency>
<groupId>jakarta.xml.bind</groupId>
<artifactId>jakarta.xml.bind-api</artifactId>
<version>${jaxb.version}</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>${jaxbimpl.version}</version>
<scope>runtime</scope>
</dependency>
<!-- Expression Language (EL)
https://jakarta.ee/specifications/expression-language/4.0/jakarta-expression-language-spec-4.0.html -->
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>jakarta.el</artifactId>
<version>${el.version}</version>
</dependency>
<!-- Authentication -->
<!-- JSON Web Token (JWT) https://jwt.io/ -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-api</artifactId>
<version>${jjwt.version}</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>${jjwt.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId>
<version>${jjwt.version}</version>
<scope>runtime</scope>
</dependency>
<!-- BEAN VALIDATION https://jakarta.ee/specifications/bean-validation/3.0/ -->
<!-- added transitively by the Hibernate Validator -->
<!--dependency>
<groupId>jakarta.validation</groupId>
<artifactId>jakarta.validation-api</artifactId>
<version>${beanvalidation.version}</version>
</dependency-->
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>${hibernate-validator.version}</version>
</dependency>
<!-- Jakarta RESTful Web Services (JAXRS)
https://jakarta.ee/specifications/restful-ws/3.0/ -->
<dependency>
<groupId>org.glassfish.jersey</groupId>
<artifactId>jersey-bom</artifactId>
<version>${jersey.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- JAXRS -->
<dependency>
<groupId>jakarta.ws.rs</groupId>
<artifactId>jakarta.ws.rs-api</artifactId>
<version>${jaxrs.version}</version>
</dependency>
<!-- Jersey Client -->
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>${jersey-client.version}</version>
</dependency>
<!-- Websocket API & Implementation -->
<!-- Not needed as embedded in Tyrus -->
<!--dependency>
<groupId>jakarta.websocket</groupId>
<artifactId>jakarta.websocket-api</artifactId>
<version>2.0.0</version>
</dependency-->
<dependency>
<groupId>org.glassfish.tyrus</groupId>
<artifactId>tyrus-server</artifactId>
<version>${tyrus.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.tyrus</groupId>
<artifactId>tyrus-container-grizzly-server</artifactId>
<version>${tyrus.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.tyrus.bundles</groupId>
<artifactId>tyrus-standalone-client</artifactId>
<version>${tyrus.version}</version>
</dependency>
<!-- JEE -->
<dependency>
<groupId>jakarta.platform</groupId>
<artifactId>jakarta.jakartaee-web-api</artifactId>
<version>${jakarta.jakartaee-api.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.platform</groupId>
<artifactId>jakarta.jakartaee-api</artifactId>
<version>${jakarta.jakartaee-api.version}</version>
<scope>provided</scope>
</dependency>
<!-- JSF -->
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>${primefaces.version}</version>
<classifier>jakarta</classifier>
</dependency>
<dependency>
<groupId>org.primefaces.themes</groupId>
<artifactId>all-themes</artifactId>
<version>${all-themes.version}</version>
</dependency>
<!-- Loggers with SLF4J -->
<!-- SLF4J with logBack -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${sl4j.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${sl4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>${sl4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
<version>${sl4j.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<!-- Build Settings -->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<executions>
<execution>
<id>attach-descriptor</id>
<goals>
<goal>attach-descriptor</goal>
</goals>
</execution>
<execution>
<id>stage-for-scm-publish</id>
<phase>post-site</phase>
<goals>
<goal>stage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-scm-publish-plugin</artifactId>
<configuration>
<pubScmUrl>scm:git:ssh://git@github.com/${github.account}/${project.artifactId}.git</pubScmUrl>
<scmBranch>gh-pages</scmBranch>
</configuration>
<executions>
<execution>
<id>scm-publish</id>
<phase>site-deploy</phase>
<goals>
<goal>publish-scm</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<executions>
<execution>
<id>enforce-versions</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireMavenVersion>
<version>${maven.version}</version>
</requireMavenVersion>
<requireJavaVersion>
<version>${java.version}</version>
</requireJavaVersion>
<!--requireProperty>
<property>app.main.class</property>
<message>You must set app.main.class property.</message>
<regex>([\p{L}_$][\p{L}\p{N}_$]*\.)*[\p{L}_$][\p{L}\p{N}_$]*</regex>
<regexMessage>You must set app.main.class property (full name of the default main
Class for the project).
</regexMessage>
</requireProperty-->
</rules>
</configuration>
</execution>
</executions>
</plugin>
<!--plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>license-maven-plugin</artifactId>
<version>2.0.0</version>
<configuration>
<licenseName>mit</licenseName>
</configuration>
<executions>
<execution>
<id>first</id>
<goals>
<goal>update-file-header</goal>
</goals>
<phase>process-sources</phase>
</execution>
</executions>
</plugin-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
</plugin>
</plugins>
<!-- Centralized plugin configuration. These plugins have to be
explicitly activated in children projects. Versions are given to ensure
build repeatability. -->
<pluginManagement>
<plugins>
<!-- The maven compiler. https://maven.apache.org/plugins/maven-compiler-plugin/
It sets the source and target java version.
mvn compile
-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${mavencompiler.version}</version>
<configuration>
<showDeprecation>true</showDeprecation>
<showWarnings>true</showWarnings>
<annotationProcessorPaths>
<!-- TODO: add org.eclipse.persistence.jpa.modelgen.processor in a
profile -->
<!-- Lombok configuration for Java9 modularized projects -->
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
<!-- Compile the unit test classes to the unit test output directory -->
<!-- Compile the integration test classes to the integration test output
directory -->
<!--executions>
<execution>
<id>default-testCompile</id>
<goals>
<goal>testCompile</goal>
</goals>
<phase>test-compile</phase>
<configuration>
<outputDirectory>target/test-classes</outputDirectory>
<compileSourceRoots>
<sourceRoot>src/test/java</sourceRoot>
</compileSourceRoots>
</configuration>
</execution>
<execution>
<id>compile-integration-tests</id>
<goals>
<goal>testCompile</goal>
</goals>
<phase>pre-integration-test</phase>
<configuration>
<outputDirectory>target/test-integration-classes</outputDirectory>
<compileSourceRoots>
<sourceRoot>src/test-integration/java</sourceRoot>
</compileSourceRoots>
</configuration>
</execution>
</executions-->
</plugin>
<!-- Creates a jar containing sources of the project in the target directory.
https://maven.apache.org/plugins/maven-source-plugin/
mvn source:jar
-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>${mavensource.version}</version>
<configuration>
<archive>
<manifest>
<addClasspath>false</addClasspath>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>attach-sources</id>
<phase>verify</phase>
<goals>
<!-- produce source artifact for project main sources -->
<goal>jar-no-fork</goal>
<!-- produce test source artifact for project test sources -->
<goal>test-jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Cleans the projects working directory
https://maven.apache.org/plugins/maven-clean-plugin/
mvn clean:clean
It can be used with other phases/goals
mvn clean package
-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>${mavenclean.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>${mavenjar.version}</version>
<!--configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>${app.main.class}</mainClass>
</manifest>
</archive>
</configuration-->
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>${mavenresource.version}</version>
<configuration>
<!-- needed to include .gitignore -->
<addDefaultExcludes>false</addDefaultExcludes>
</configuration>
<executions>
<!-- Copy resources for the unit test resources files to the unit test
output directory -->
<execution>
<id>default-testResources</id>
<goals>
<goal>testResources</goal>
</goals>
<phase>process-test-resources</phase>
<configuration>
<outputDirectory>${basedir}/target/test-classes</outputDirectory>
<resources>
<resource>
<directory>${basedir}/src/test/resources</directory>
</resource>
</resources>
</configuration>
</execution>
<!-- Copy resources for the integration test resources files to the
integration test output directory -->
<execution>
<id>add-integration-test-resources</id>
<goals>
<goal>copy-resources</goal>
</goals>
<phase>pre-integration-test</phase>
<configuration>
<outputDirectory>${basedir}/target/test-integration-classes</outputDirectory>
<resources>
<resource>
<directory>${basedir}/src/test-integration/resources</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>${maveninstall.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-archetype-plugin</artifactId>
<version>${mavenarchetype.version}</version>
<configuration>
<!-- needed to include .gitignore -->
<useDefaultExcludes>false</useDefaultExcludes>
</configuration>
</plugin>
<!-- Generates the javadoc. Private members are shown.
see <reporting> below for a public only version
https://maven.apache.org/plugins/maven-javadoc-plugin/
mvn javadoc:javadoc
mvn javadoc:javadoc-jar
-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>${mavenjavadoc.version}</version>
<configuration>
<show>private</show>
</configuration>
</plugin>
<!-- Deploy maven artifacts to a repository
http://maven.apache.org/plugins/maven-deploy-plugin/
mvn deploy
mvn deploy:deploy
mvn deploy:deploy-file
see <distributionManagement> above
-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>${mavendeploy.version}</version>
</plugin>
<!-- Maven utilities :
- adds sources, test, resources directories, ...
mvn build-helper:add-source
mvn build-helper:add-test-source
mvn build-helper:add-resource
mvn build-helper:add-test-resource
- parses artifact version
- removes project artifact from the local repository
mvn build-helper:remove-project-artifact
...
http://www.mojohaus.org/build-helper-maven-plugin/index.html
-->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>${mavenhelper.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-help-plugin</artifactId>
<version>${mavenhelp.version}</version>
</plugin>
<!-- Executes unit tests and Generates reports (target/surefire-reports).
http://maven.apache.org/surefire/maven-surefire-plugin/
mvn test
to avoid test execution :
mvn install -DskipTests
to avoid test compilation, execution and concerns integration test (see failsafe plugin):
mvn install -Dmaven.test.skip=true
see junit plugin
-->
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>${mavensurefire.version}</version>
<!--configuration>
<testClassesDirectory>${basedir}/target/test-classes</testClassesDirectory>
<testSourceDirectory>${basedir}/src/test/java</testSourceDirectory>
<includes>
<include>**/*.class</include>
</includes>
<testFailureIgnore>false</testFailureIgnore>
</configuration-->
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<version>${mavensurefirereport.version}</version>
<configuration>
<aggregate>true</aggregate>
<linkXRef>true</linkXRef>
</configuration>
</plugin>
<!-- runs integration tests.
mvn verify
http://maven.apache.org/surefire/maven-failsafe-plugin/
See docker profile to bind needed servers (web, database, ...)
-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>${mavenfailsafe.version}</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>${nexusstaging.version}</version>
</plugin>
<!-- Generate of website for the project. It includes static and dynamic pages,
and several reports.
See <reporting> below.
See the directory src/site
https://maven.apache.org/plugins/maven-site-plugin/
mvn site
The site can be deployed after generation (copied with scp or other protocols)
with mvn site-deploy. Add
<distributionManagement>
<site>
<id>www.yourcompany.com</id>
<url>scp://www.yourcompany.com/www/docs/project/</url>
</site>
</distributionManagement>
to the project.
mvn site:run launches de
a web server see http://localhost:8080/
!! WARNING : BY DEFAULT WE SKIP IT TO USE GITHUB-PAGES BRANCH !!
-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>${mavensite.version}</version>
<configuration>
<skipDeploy>true</skipDeploy>
</configuration>
</plugin>
<plugin>
<groupId>com.amashchenko.maven.plugin</groupId>
<artifactId>gitflow-maven-plugin</artifactId>
<version>${gitflow-maven-plugin.version}</version>
<configuration>
<installProject>false</installProject>
<verbose>false</verbose>
<gitFlowConfig>
<productionBranch>master</productionBranch>
<developmentBranch>develop</developmentBranch>
<featureBranchPrefix>feature/</featureBranchPrefix>
<releaseBranchPrefix>release/</releaseBranchPrefix>
<hotfixBranchPrefix>hotfix/</hotfixBranchPrefix>
<supportBranchPrefix>support/</supportBranchPrefix>
<versionTagPrefix />
<origin>origin</origin>
</gitFlowConfig>
</configuration>
</plugin>
<!-- Sets the default class to run with
mvn exec:java
-->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>${mavenexec.version}</version>
<executions>
<execution>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<!--suppress
MavenModelInspection -->
<mainClass>${app.main.class}</mainClass>
</configuration>
</plugin>
<!-- Builds a jar that can merge the artifact and its dependencies
https://maven.apache.org/plugins/maven-shade-plugin/
WARNING minimizeJar can cause trouble, disable it in the child project if needed
The manifest mainclass can be given with the property ${app.main.class}.
Its is added to the package phase.
-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>${mavenshade.version}</version>
<configuration>
<createDependencyReducedPom>true</createDependencyReducedPom>
<minimizeJar>true</minimizeJar>
<!-- The shaded artifact is not the main artifact -->
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>withdependencies</shadedClassifierName>
<transformers>
<!-- merge services resource for SPI -->
<transformer
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
<!-- makes a default entry point in the shaded jar -->
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<manifestEntries>
<Main-Class>${app.main.class}</Main-Class>
<X-Compile-Source-JDK>${java.version}</X-Compile-Source-JDK>
<X-Compile-Target-JDK>${java.version}</X-Compile-Target-JDK>
</manifestEntries>
</transformer>
<!-- keep a default config file -->
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>config.properties</resource>
<resource>log4j.properties</resource>
</transformer>
</transformers>
<!-- removes signatures in uberjar -->
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>${mavenassembly.version}</version>
</plugin>
<!-- configuration of the SCM plugin to deploy GitHub pages in a dedicated branch -->
<!--
Initial creation of the branch has to be done manually, as a Git orphan branch:
1. git checkout - -orphan gh-pages to create the branch locally,
2. rm .git/index ; git clean -fdx to clean the branch content and let it empy,
3. copy an initial site content,
4. commit and push: git add *, git commit -m "initial site content", git push
-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-scm-publish-plugin</artifactId>
<version>${mavenscm.version}</version>
<configuration>
<tryUpdate>true</tryUpdate>
<scmBranch>gh-pages</scmBranch>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>${mavendependency.version}</version>
<configuration>
<!-- We remove classes loaded by introspection from the check -->
<ignoredUnusedDeclaredDependencies>
<ignoredUnusedDeclaredDependency>org.projectlombok:lombok</ignoredUnusedDeclaredDependency>
<ignoredUnusedDeclaredDependency>org.slf4j:slf4j-api</ignoredUnusedDeclaredDependency>
<ignoredUnusedDeclaredDependency>org.junit.jupiter:junit-jupiter-engine
</ignoredUnusedDeclaredDependency>
</ignoredUnusedDeclaredDependencies>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>${mavenrelease.version}</version>
</plugin>
<!--plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>3.1.0</version>
</plugin-->
<!-- Sonarqube -->
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>${sonarqube.version}</version>
</plugin>
<plugin>
<groupId>io.github.r0bb3n</groupId>
<artifactId>sonar-quality-gate-maven-plugin</artifactId>
<version>${sonarqualitygate.version}</version>
</plugin>
<!-- Plugin to check latest stable version of plugins and dependencies -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>${mavenversions.version}</version>
<configuration>
<rulesUri>file:///${project.basedir}/rules.xml</rulesUri>
</configuration>
<executions>
<!--execution>
<phase>compile</phase>
<goals>
<goal>display-dependency-updates</goal>
<goal>display-plugin-updates</goal>
</goals>
</execution-->
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>${mavenenforcer.version}</version>
</plugin>
<!-- A VOIR -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>flatten-maven-plugin</artifactId>
<version>${mavenflatten.version}</version>
<configuration>
</configuration>
<executions>
<!-- enable flattening -->
<execution>
<id>flatten</id>
<phase>process-resources</phase>
<goals>
<goal>flatten</goal>
</goals>
</execution>
<!-- ensure proper cleanup -->
<execution>
<id>flatten.clean</id>
<phase>clean</phase>
<goals>
<goal>clean</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Jakarta EE -->
<!-- WAR -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>${maven-war-plugin.version}</version>
</plugin>
<!-- EJB -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ejb-plugin</artifactId>
<version>${maven-ejb-plugin.version}</version>
<configuration>
<ejbVersion>4.0</ejbVersion>
<generateClient>true</generateClient>
</configuration>
</plugin>
<!-- EAR -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>${maven-ear-plugin.version}</version>
<configuration>
<version>10</version>
<defaultLibBundleDir>lib/</defaultLibBundleDir>
<skinnyWars>true</skinnyWars>
</configuration>
</plugin>
<!-- Generation of self-signed certificates -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>keytool-maven-plugin</artifactId>
<version>${keytool-maven-plugin.version}</version>
<executions>
<execution>
<phase>generate-resources</phase>
<id>generateKeyPair</id>
<goals>
<goal>generateKeyPair</goal>
</goals>
<configuration>
<skipIfExist>true</skipIfExist>
<keyalg>RSA</keyalg>
<keystore>${project.basedir}/src/main/resources/mycert.p12</keystore>
<storetype>PKCS12</storetype>
</configuration>
</execution>
<execution>
<phase>generate-resources</phase>
<id>generateCertificateRequest</id>
<goals>
<goal>generateCertificateRequest</goal>
</goals>
<configuration>
<file>${project.basedir}/src/main/resources/mycert.csr</file>
<keystore>${project.basedir}/src/main/resources/mycert.p12</keystore>
<storetype>PKCS12</storetype>
</configuration>
</execution>
<execution>
<phase>generate-resources</phase>
<id>generateCertificate</id>
<goals>
<goal>generateCertificate</goal>
</goals>
<configuration>
<keystore>${project.basedir}/src/main/resources/mycert.p12</keystore>
<storetype>PKCS12</storetype>
<infile>${project.basedir}/src/main/resources/mycert.csr</infile>
<outfile>${project.basedir}/src/main/resources/mycert.crt</outfile>
<rfc>true</rfc>
<validity>100</validity>
<sigalg>SHA256withRSA</sigalg>
</configuration>
</execution>
<execution>
<goals>
<goal>exportCertificate</goal>
</goals>
<phase>generate-resources</phase>
<configuration>
<file>${project.basedir}/src/main/resources/mycert-pub.cer</file>
<keystore>${project.basedir}/src/main/resources/mycert.p12</keystore>
<storetype>PKCS12</storetype>
<rfc>true</rfc>
</configuration>
</execution>
<execution>
<id>importCertificate</id>
<goals>
<goal>importCertificate</goal>
</goals>
<phase>generate-resources</phase>
<configuration>
<keystore>${project.basedir}/src/main/resources/mycert-pub.p12</keystore>
<storetype>PKCS12</storetype>
<file>${project.basedir}/src/main/resources/mycert-pub.cer</file>
<trustcacerts>true</trustcacerts>
<noprompt>true</noprompt>
<passwordProtected>false</passwordProtected>
<skipIfExist>true</skipIfExist>
</configuration>
</execution>
</executions>
<configuration>
<storepass>storepass</storepass>
<keypass>storepass</keypass>
<alias>mycert</alias>
<dname>cn=localhost</dname>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
<!-- See maven:site plugin -->
<reporting>
<excludeDefaults>true</excludeDefaults>
<!--outputDirectory>${project.build.directory}/site</outputDirectory-->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>${maveninforeport.version}</version>
<configuration>
<!--dependencyLocationsEnabled>false</dependencyLocationsEnabled-->
</configuration>
<reportSets>
<reportSet>
<reports>
<report>summary</report>
<report>dependency-info</report>
<report>team</report>
<report>scm</report>
<report>distribution-management</report>
<report>issue-management</report>
<report>mailing-lists</report>
<report>ci-management</report>
<report>dependencies</report>
<!--report>dependency-convergence</report-->
<report>dependency-management</report>
<report>index</report>
<report>licenses</report>
<report>modules</report>
<report>plugins</report>
<report>plugin-management</report>
</reports>
</reportSet>
</reportSets>
</plugin>
<!--plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-changelog-plugin</artifactId>
<version>2.3</version>
</plugin-->
<!-- A specific version of the javadoc for the website
with only public members -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>${mavenjavadoc.version}</version>
<configuration />
<reportSets>
<reportSet>
<id>default</id>
<configuration>
<show>public</show>
</configuration>
<reports>
<report>javadoc</report>
<!--report>test-javadoc</report-->
</reports>
</reportSet>
<!--reportSet>
<id>aggregate</id>
<configuration>
</configuration>
<reports>
<report>aggregate</report>
</reports>
</reportSet-->
</reportSets>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>${mavenversions.version}</version>
<reportSets>
<reportSet>
<reports>
<report>dependency-updates-report</report>
<report>plugin-updates-report</report>
<report>property-updates-report</report>
</reports>
</reportSet>
</reportSets>
</plugin>
</plugins>
</reporting>
<profiles>
<profile>
<!-- A profile to sign artifacts with gpg
mvn verify -P gpgsigning ou mvn deploy -P gpgsigning
//no white space between the two dashes (due to xml comment).
gpg - -verify \
target/maven-parentpom-0.1.0-SNAPSHOT.pom.asc \
target/maven-parentpom-0.1.0-SNAPSHOT.pom -->
<id>gpgsigning</id>
<build>
<plugins>
<plugin>
<groupId>org.simplify4u.plugins</groupId>
<artifactId>sign-maven-plugin</artifactId>
<version>${simplify4usign.version}</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>mavencentral</id>
<distributionManagement>
<snapshotRepository>
<id>ossrh</id>
<url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>ossrh</id>
<url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>
<build>
<plugins>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://s01.oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>true</autoReleaseAfterClose>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>github</id>
<distributionManagement>
<repository>
<id>github</id>
<name>GitHub Packages</name>
<url>https://maven.pkg.github.com/${github.account}/${project.artifactId}</url>
</repository>
<snapshotRepository>
<id>github</id>
<name>GitHub Packages</name>
<url>https://maven.pkg.github.com/${github.account}/${project.artifactId}</url>
</snapshotRepository>
</distributionManagement>
</profile>
<profile>
<id>shadedjar</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>native</id>
<build>
<plugins>
<plugin>
<groupId>org.graalvm.buildtools</groupId>
<artifactId>native-maven-plugin</artifactId>
<version>${mavengrallvm.version}</version>
<extensions>true</extensions>
<executions>
<execution>
<id>build-native</id>
<goals>
<goal>compile-no-fork</goal>
</goals>
<phase>package</phase>
</execution>
<execution>
<id>test-native</id>
<goals>
<goal>test</goal>
</goals>
<phase>test</phase>
</execution>
</executions>
<configuration>
<buildArgs>
<!-- needed to run on alpine without glibc -->
<arg>--static</arg>
</buildArgs>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>jlink</id>
<build>
<plugins>
<!-- Needed to use jlink with automatic modules
We use https://github.com/ghackenberg/jigsaw-maven-plugin
We move jars in target/modules
-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<outputDirectory>${project.build.directory}/modules</outputDirectory>
</configuration>
</plugin>
<!-- To deal with automatic modules
We copy all the dependencies in target/modules
-->
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/modules</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>io.github.ghackenberg</groupId>
<artifactId>jigsaw-maven-plugin</artifactId>
<version>${mavenjigsaw.version}</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>link</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>${app.main.class}</mainClass>
<multiRelease>${java.version}</multiRelease>
<ignoreMissingDeps>true</ignoreMissingDeps>
<launcher>myapp=${project.module}/${app.main.class}</launcher>
<!-- Waiting for pull request to be merged -->
<jlinkOptions>--no-header-files,- -no-man-pages,- -strip-debug,--compress=2</jlinkOptions>
<module>${project.module}</module>
<!--ignoreSigningInfo>true</ignoreSigningInfo-->
</configuration>
</plugin>
<!-- This is an app, so we don't want to install it in the local Maven
repository -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>javadoc</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<executions>
<execution>
<id>aggregate</id>
<phase>package</phase>
<goals>
<goal>aggregate</goal>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- java code coverage with surefire -->
<profile>
<id>jacoco</id>
<build>
<plugins>
<!-- Code coverage -->
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco.version}</version>
<executions>
<!-- Surefire -->
<execution>
<id>before-unit-test-execution</id>
<goals>
<goal>prepare-agent</goal>
</goals>
<configuration>
<destFile>
${project.build.directory}/jacoco-output/jacoco-unit-tests.exec
</destFile>
<propertyName>surefire.jacoco.args</propertyName>
</configuration>
</execution>
<execution>
<id>after-unit-test-execution</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
<configuration>
<dataFile>
${project.build.directory}/jacoco-output/jacoco-unit-tests.exec
</dataFile>
<outputDirectory>
${project.reporting.outputDirectory}/jacoco-unit-test-coverage-report
</outputDirectory>
</configuration>
</execution>
<!-- Failsafe -->
<execution>
<id>before-integration-test-execution</id>
<phase>pre-integration-test</phase>
<goals>
<goal>prepare-agent</goal>
</goals>
<configuration>
<destFile>
${project.build.directory}/jacoco-output/jacoco-integration-tests.exec
</destFile>
<propertyName>failsafe.jacoco.args</propertyName>
</configuration>
</execution>
<execution>
<id>after-integration-test-execution</id>
<phase>post-integration-test</phase>
<goals>
<goal>report</goal>
</goals>
<configuration>
<dataFile>
${project.build.directory}/jacoco-output/jacoco-integration-tests.exec
</dataFile>
<outputDirectory>
${project.reporting.outputDirectory}/jacoco-integration-test-coverage-report
</outputDirectory>
</configuration>
</execution>
<!-- Merged test coverage report -->
<execution>
<id>merge-unit-and-integration</id>
<phase>post-integration-test</phase>
<goals>
<goal>merge</goal>
</goals>
<configuration>
<fileSets>
<fileSet>
<directory>${project.build.directory}/jacoco-output/</directory>
<includes>
<include>*.exec</include>
</includes>
</fileSet>
</fileSets>
<destFile>${project.build.directory}/jacoco-output/merged.exec</destFile>
</configuration>
</execution>
<execution>
<id>create-merged-report</id>
<phase>post-integration-test</phase>
<goals>
<goal>report</goal>
</goals>
<configuration>
<dataFile>${project.build.directory}/jacoco-output/merged.exec</dataFile>
<outputDirectory>
${project.reporting.outputDirectory}/jacoco-merged-coverage-report
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<configuration>
<!--suppress
UnresolvedMavenProperty -->
<!--suppress
UnresolvedMavenProperty -->
<argLine>${failsafe.jacoco.args}</argLine>
</configuration>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<!--suppress
UnresolvedMavenProperty -->
<argLine>${surefire.jacoco.args}</argLine>
<testFailureIgnore>false</testFailureIgnore>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>sonar</id>
<properties>
<!--suppress
UnresolvedMavenProperty -->
<sonar.host.url>${env.SONAR_URL}</sonar.host.url>
<!--suppress
UnresolvedMavenProperty -->
<sonar.login>${env.SONAR_TOKEN}</sonar.login>
<sonar.coverage.jacoco.xmlReportPaths>
target/site/jacoco-merged-coverage-report/jacoco.xml
</sonar.coverage.jacoco.xmlReportPaths>
<sonar.exclusions>**/module-info.java</sonar.exclusions>
</properties>
</profile>
<!-- JEE Profiles -->
<!-- Payara micro provisioning -->
<profile>
<id>arq-payara-micro</id>
<!--dependencies>
<dependency>
<groupId>fish.payara.arquillian</groupId>
<artifactId>arquillian-payara-micro-managed</artifactId>
<version>${arquillian-payara.version}</version>
<scope>test</scope>
</dependency>
</dependencies-->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack</id>
<!--phase>pre-integration-test</phase-->
<phase>prepare-package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>fish.payara.extras</groupId>
<artifactId>payara-micro</artifactId>
<version>${payara.version}</version>
<type>jar</type>
<overWrite>false</overWrite>
<!--suppress
UnresolvedMavenProperty -->
<outputDirectory>
${session.executionRootDirectory}/target</outputDirectory>
<destFileName>payara-micro.jar</destFileName>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<systemPropertyVariables>
<!--suppress
UnresolvedMavenProperty -->
<!--payara.home>${session.executionRootDirectory}/target/payara6</payara.home-->
<buildDirectory>${project.build.directory}</buildDirectory>
<!--suppress
UnresolvedMavenProperty -->
<payara.microJar>
${session.executionRootDirectory}/target/payara-micro.jar
</payara.microJar>
</systemPropertyVariables>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<configuration>
<systemPropertyVariables>
<!--suppress
UnresolvedMavenProperty -->
<!--payara.home>${session.executionRootDirectory}/target/payara6</payara.home-->
<buildDirectory>${project.build.directory}</buildDirectory>
<!--suppress
UnresolvedMavenProperty -->
<payara.microJar>
${session.executionRootDirectory}/target/payara-micro.jar</payara.microJar>
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<!-- Payara full provisioning -->
<profile>
<id>arq-payara-managed</id>
<dependencies>
<dependency>
<groupId>fish.payara.arquillian</groupId>
<artifactId>arquillian-payara-server-managed</artifactId>
<version>${arquillian-payara.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.6.1</version>
<executions>
<execution>
<id>unpack</id>
<!--phase>pre-integration-test</phase-->
<phase>prepare-package</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>fish.payara.distributions</groupId>
<artifactId>payara</artifactId>
<version>${payara.version}</version>
<type>zip</type>
<overWrite>false</overWrite>
<!--suppress
UnresolvedMavenProperty -->
<outputDirectory>
${session.executionRootDirectory}/target</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
<!--execution>
<id>copy-h2</id>
<phase>pre-integration-test</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>${h2.version}</version>
<type>jar</type>
<overWrite>true</overWrite>
<outputDirectory>${project.build.directory}/target/payara6/glassfish/h2db/bin/
</outputDirectory>
<destFileName>h2.jar</destFileName>
</artifactItem>
</artifactItems>
</configuration>
</execution-->
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<systemPropertyVariables>
<!--suppress
UnresolvedMavenProperty -->
<payara.home>${session.executionRootDirectory}/target/payara6</payara.home>
</systemPropertyVariables>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<configuration>
<systemPropertyVariables>
<!--suppress
UnresolvedMavenProperty -->
<payara.home>${session.executionRootDirectory}/target/payara6</payara.home>
<arquillian.launch>payara-managed</arquillian.launch>
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>