Content of file superpom-4.15.pom
<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 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>it.tidalwave.thesefoolishthings</groupId>
<artifactId>superpom</artifactId>
<packaging>pom</packaging>
<version>4.15</version>
<name>TheseFoolishThings - SuperPOM</name>
<url>http://tidalwave.it</url>
<inceptionYear>2010</inceptionYear>
<description>
[![Build Status](https://drone.io/bitbucket.org/tidalwave/thesefoolishthings-superpom-src/status.png)]
(https://drone.io/bitbucket.org/tidalwave/thesefoolishthings-superpom-src/latest)
A feature-rich SuperPOM for building Java projects. It features:
* explicit version configuration for a number of plugins;
* easy configurability by means of pre-defined properties to avoid cut & copy of plugin sections.
A number of profiles, easily activatable, are available for:
* Spring-AOP configuration;
* different kinds of Continous Integration tasks, including a full run of QA tools such as JaCoCo, FindBugs, PMD, etc...
* deploying WARs and locally running them with Tomcat or Jetty;
* creating a Mac OS X bundle for JavaFX applications;
* creating .deb packages for both application and services;
* a customized release cycle, including all requirements for the Maven Central such as signing, with a 'transactional' behaviour
(all artifacts, both the DSCM and the Maven artifacts are prepared on the local disk, so they can be uploaded in a second moment);
Remember to customise it
------------------------
If you use it, please remember to change the ```description```,```url```, ```organization```, ```developers```, ```license```, etc...
to override those related to the development of this POM.
</description>
<organization>
<name>Tidalwave s.a.s. (http://tidalwave.it)</name>
<url>http://tidalwave.it</url>
</organization>
<developers>
<developer>
<name>Fabrizio Giudici</name>
<email>fabrizio.giudici@tidalwave.it</email>
<url>http://tidalwave.it/people/fabrizio/</url>
<organization>Tidalwave s.a.s.</organization>
<organizationUrl>http://tidalwave.it</organizationUrl>
<roles>
<role>manager</role>
<role>developer</role>
</roles>
<timezone>+1</timezone>
</developer>
</developers>
<licenses>
<license>
<name>Apache-2.0</name>
<url>http://www.opensource.org/licenses/apache2.0.php</url>
<comments>Apache License 2.0</comments>
</license>
</licenses>
<issueManagement>
<system>Jira</system>
<url>http://services.tidalwave.it/jira/browse/SUP</url>
</issueManagement>
<ciManagement>
<system>hudson</system>
<url>http://services.tidalwave.it/ci/view/TheseFoolishThings_SuperPOM</url>
</ciManagement>
<properties>
<tft.project.description>TheseFoolishThings Super POM</tft.project.description>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<bundle.namespace>${project.groupId}.${project.artifactId}</bundle.namespace>
<staging.mvn.repo.url>file://${project.build.directory}/target-maven-repo</staging.mvn.repo.url>
<netbeans.checkstyle.format>true</netbeans.checkstyle.format>
<!-- Deprecated properties replaced by tft.* ones -->
<testFailureIgnore>false</testFailureIgnore> <!-- backward compatibility, to be dropped -->
<stableAPI>false</stableAPI>
<stableAPIVersion>(,${project.version})</stableAPIVersion>
<disableJavaDocs>false</disableJavaDocs>
<disableDeploy>false</disableDeploy>
<skipTests>false</skipTests>
<scm.repo.effective.url>${scm.repo.url}</scm.repo.effective.url>
<tft.staging-repo.url>https://oss.sonatype.org</tft.staging-repo.url>
<tft.staging-repo.id>staging-oss.sonatype.org</tft.staging-repo.id>
<release.profiles>release-sign-artifacts</release.profiles>
<tft.defaultGoal>clean install</tft.defaultGoal>
<tft.profile.metrics.checkstyleGoal>checkstyle:checkstyle</tft.profile.metrics.checkstyleGoal>
<tft.profile.metrics.findbugsGoal />
<tft.profile.metrics.spotbugsGoal>com.github.spotbugs:spotbugs-maven-plugin:check</tft.profile.metrics.spotbugsGoal>
<tft.profile.metrics.javancssGoal>javancss:report</tft.profile.metrics.javancssGoal>
<tft.profile.metrics.pmdGoal>pmd:cpd pmd:pmd</tft.profile.metrics.pmdGoal>
<tft.profile.metrics.sonarGoal>sonar:sonar</tft.profile.metrics.sonarGoal>
<tft.profile.metrics.clirrGoal>clirr:clirr</tft.profile.metrics.clirrGoal>
<tft.profile.metrics.dependencyCheckGoal>dependency-check:aggregate</tft.profile.metrics.dependencyCheckGoal>
<tft.profile.metrics.defaultGoal>
clean install ${tft.profile.metrics.findbugsGoal} ${tft.profile.metrics.spotbugsGoal} ${tft.profile.metrics.pmdGoal}
${tft.profile.metrics.checkstyleGoal} ${tft.profile.metrics.clirrGoal} ${tft.profile.metrics.javancssGoal} dependency:analyze
${tft.profile.metrics.sonarGoal} ${tft.profile.metrics.dependencyCheckGoal} ${tft.profile.metrics.siteGoal}
</tft.profile.metrics.defaultGoal>
<tft.profile.metrics.siteGoal />
<tft.checkstyle.skip>false</tft.checkstyle.skip>
<tft.descriptionStamp>.description</tft.descriptionStamp>
<tft.findbugs.skip>false</tft.findbugs.skip>
<tft.spotbugs.skip>${tft.findbugs.skip}</tft.spotbugs.skip>
<findbugs.skip>${tft.findbugs.skip}</findbugs.skip> <!-- TODO: <skip> in the plugin doesn't work -->
<tft.license.name>tidalwave_asf2</tft.license.name>
<tft.license.template>/it/tidalwave/license/tidalwave-header-description.ftl</tft.license.template>
<tft.maven.requiredVersion>3.6.0</tft.maven.requiredVersion>
<tft.maven.requiredJdk>[1.8.0,)</tft.maven.requiredJdk>
<tft.superpom.config.version>1.6</tft.superpom.config.version>
<tft.mainClass>please-set-the-tft.mainClass-property-to-specify-the-main-class</tft.mainClass>
<tft.jar.classpathInManifest>false</tft.jar.classpathInManifest>
<!-- Default compiler settings. -->
<tft.javac.source>1.8</tft.javac.source>
<tft.javac.target>1.8</tft.javac.target>
<!--<tft.javac.release>8</tft.javac.release>-->
<tft.javac.xlint>-Xlint:all</tft.javac.xlint>
<tft.javac.debug>true</tft.javac.debug>
<tft.javac.optimize>true</tft.javac.optimize>
<tft.javac.showDeprecation>true</tft.javac.showDeprecation>
<tft.javac.showWarnings>true</tft.javac.showWarnings>
<tft.javac.fork>true</tft.javac.fork>
<tft.pmd.skip>false</tft.pmd.skip>
<pmd.skip>${tft.pmd.skip}</pmd.skip> <!-- TODO: <skip> in the plugin doesn't work -->
<cpd.skip>${tft.pmd.skip}</cpd.skip> <!-- TODO: <skip> in the plugin doesn't work -->
<tft.javancss.skip>true</tft.javancss.skip> <!-- FIXME: breaks with JDK 1.7+ -->
<ncss.skip>${tft.javancss.skip}</ncss.skip> <!-- TODO: <skip> in the plugin doesn't work -->
<tft.project.build.unwoven-classes.directory>${project.build.directory}/unwoven-classes</tft.project.build.unwoven-classes.directory>
<tft.project.build.unwoven-test-classes.directory>${project.build.directory}/unwoven-test-classes</tft.project.build.unwoven-test-classes.directory>
<tft.stableAPI>${stableAPI}</tft.stableAPI>
<tft.stableAPIVersion>${stableAPIVersion}</tft.stableAPIVersion>
<tft.disableJavaDocs>${disableJavaDocs}</tft.disableJavaDocs>
<tft.disableDeploy>${disableDeploy}</tft.disableDeploy>
<tft.javadoc.doclint />
<tft.release.localCheckout>true</tft.release.localCheckout>
<tft.release.preparationGoals>clean install verify</tft.release.preparationGoals>
<tft.release.completionGoals />
<tft.release.goals>clean install source:jar-no-fork source:test-jar-no-fork javadoc:jar assembly:single deploy</tft.release.goals>
<tft.release.sign-artifacts.skip>false</tft.release.sign-artifacts.skip>
<tft.release.pushChanges>false</tft.release.pushChanges>
<!-- Default dependency versions -->
<tft.appbundler.version>1.0-patched</tft.appbundler.version>
<tft.aspectjrt.version>1.9.6</tft.aspectjrt.version>
<tft.hamcrest-matchers.version>1.3</tft.hamcrest-matchers.version>
<tft.jsr330.version>1</tft.jsr330.version>
<tft.javax-annotation.version>1.3.2</tft.javax-annotation.version>
<tft.findbugs-annotations.version>3.1.9</tft.findbugs-annotations.version>
<tft.junit.version>4.12</tft.junit.version>
<tft.logback.version>1.2.3</tft.logback.version>
<tft.lombok.version>1.18.18</tft.lombok.version>
<tft.mockito.version>3.8.0</tft.mockito.version>
<tft.slf4j.version>1.7.30</tft.slf4j.version>
<tft.spring.version>4.3.0.RELEASE</tft.spring.version>
<tft.testng.version>6.9.10</tft.testng.version>
<!-- Default test configuration. -->
<tft.test.skip>${skipTests}</tft.test.skip>
<tft.test.maxMemory>768M</tft.test.maxMemory>
<tft.test.reportsDirectory>${project.build.directory}/surefire-reports/plain</tft.test.reportsDirectory>
<tft.test.failureIgnore>${testFailureIgnore}</tft.test.failureIgnore>
<tft.test.excludedGroups />
<tft.test.vmOptions />
<tft.test.report.aggregate>true</tft.test.report.aggregate>
<tft.maven-surefire-report-plugin.skip>false</tft.maven-surefire-report-plugin.skip>
<tft.embedded-jdk-groupId>it.tidalwave.jdk</tft.embedded-jdk-groupId>
<tft.embedded-jdk-artifactId>it-tidalwave-openjdk7</tft.embedded-jdk-artifactId>
<tft.embedded-jdk-name>openjdk1.7.0u7</tft.embedded-jdk-name>
<tft.embedded-jdk-version>1.7.0_07-1</tft.embedded-jdk-version>
<tft.embedded-jdk-classifier>macosx-intel</tft.embedded-jdk-classifier>
<tft.aspectj.ajc.verbose>false</tft.aspectj.ajc.verbose>
<tft.jetty.port>8080</tft.jetty.port>
<tft.jetty.stopPort>9966</tft.jetty.stopPort>
<tft.jetty.scanIntervalSeconds>4</tft.jetty.scanIntervalSeconds>
<tft.jetty.stopKey>${project.groupId}:${project.artifactId}</tft.jetty.stopKey>
<tft.genisoimage>genisoimage</tft.genisoimage>
<tft.gwt.version>2.1.1</tft.gwt.version>
<tft.scm>git</tft.scm>
<!-- tft.test.listeners></tft.test.listeners -->
<tft.javadoc.excludePackageNames>*.impl:*.impl.*</tft.javadoc.excludePackageNames>
<tft.javadoc.doclet>nl.talsmasoftware.umldoclet.UMLDoclet</tft.javadoc.doclet>
<tft.javadoc.doclet.groupId>nl.talsmasoftware</tft.javadoc.doclet.groupId>
<tft.javadoc.doclet.artifactId>umldoclet</tft.javadoc.doclet.artifactId>
<tft.javadoc.doclet.version>2.0.12</tft.javadoc.doclet.version>
<tft.javadoc.doclet.additionalParam>-verbose</tft.javadoc.doclet.additionalParam>
<tft.clirr.skip>false</tft.clirr.skip>
<tft.buildNumber.getRevisionOnlyOnce>false</tft.buildNumber.getRevisionOnlyOnce>
<!--==== Plugin Versions ==================================================================================-->
<tft.maven-android-plugin.version>4.0.0</tft.maven-android-plugin.version>
<tft.maven-antrun-plugin.version>3.0.0</tft.maven-antrun-plugin.version>
<tft.maven-archetype-plugin.version>2.4</tft.maven-archetype-plugin.version>
<tft.maven-assembly-plugin.version>3.3.0</tft.maven-assembly-plugin.version>
<tft.maven-bundle-plugin.version>4.2.1</tft.maven-bundle-plugin.version>
<tft.maven-checkstyle-plugin.version>3.0.0</tft.maven-checkstyle-plugin.version>
<tft.maven-clean-plugin.version>3.1.0</tft.maven-clean-plugin.version>
<tft.maven-compiler-plugin.version>3.8.1</tft.maven-compiler-plugin.version>
<tft.maven-dependency-plugin.version>3.1.2</tft.maven-dependency-plugin.version>
<tft.maven-deploy-plugin.version>3.0.0-M1</tft.maven-deploy-plugin.version>
<tft.maven-doap-plugin.version>1.2</tft.maven-doap-plugin.version>
<tft.maven-enforcer-plugin.version>3.0.0-M3</tft.maven-enforcer-plugin.version>
<tft.maven-gpg-plugin.version>1.6</tft.maven-gpg-plugin.version>
<tft.maven-graph-plugin.version>1.39</tft.maven-graph-plugin.version>
<tft.maven-install-plugin.version>3.0.0-M1</tft.maven-install-plugin.version>
<tft.maven-jar-plugin.version>3.2.0</tft.maven-jar-plugin.version>
<tft.maven-jarsigner-plugin.version>3.0.0</tft.maven-jarsigner-plugin.version>
<tft.maven-javadoc-plugin.version>3.2.0</tft.maven-javadoc-plugin.version>
<tft.maven-jdeb-plugin.version>1.7</tft.maven-jdeb-plugin.version>
<tft.maven-jetty-plugin.version>6.1.26</tft.maven-jetty-plugin.version> <!-- FIXME: 7.0.0.pre5 breaks current projects -->
<tft.maven-license-plugin.version>1.10.b1</tft.maven-license-plugin.version>
<tft.maven-pmd-plugin.version>3.14.0</tft.maven-pmd-plugin.version>
<tft.maven-project-info-reports-plugin.version>3.1.1</tft.maven-project-info-reports-plugin.version>
<tft.maven-release-plugin.version>3.0.0-M1</tft.maven-release-plugin.version>
<tft.maven-replacer-plugin.version>1.5.3</tft.maven-replacer-plugin.version>
<tft.maven-resources-plugin.version>3.2.0</tft.maven-resources-plugin.version>
<tft.maven-scm-plugin.version>1.11.2</tft.maven-scm-plugin.version>
<tft.maven-shade-plugin.version>3.2.4</tft.maven-shade-plugin.version>
<tft.maven-site-plugin.version>3.9.1</tft.maven-site-plugin.version>
<tft.maven-source-plugin.version>3.2.0</tft.maven-source-plugin.version>
<tft.maven-surefire-plugin.version>3.0.0-M5</tft.maven-surefire-plugin.version>
<tft.maven-surefire-report-plugin.version>3.0.0-M5</tft.maven-surefire-report-plugin.version>
<tft.maven-war-plugin.version>3.3.1</tft.maven-war-plugin.version>
<tft.aspectj-maven-plugin.version>1.11</tft.aspectj-maven-plugin.version>
<tft.build-helper-maven-plugin.version>3.2.0</tft.build-helper-maven-plugin.version>
<tft.buildnumber-maven-plugin.version>1.4</tft.buildnumber-maven-plugin.version>
<tft.clirr-maven-plugin.version>2.8</tft.clirr-maven-plugin.version>
<tft.dependency-check-maven-plugin.version>6.1.1</tft.dependency-check-maven-plugin.version>
<tft.docker-maven-plugin.version>1.2.2</tft.docker-maven-plugin.version>
<tft.dockerfile-maven-plugin.version>1.4.9</tft.dockerfile-maven-plugin.version>
<tft.exec-maven-plugin.version>3.0.0</tft.exec-maven-plugin.version>
<tft.findbugs-maven-plugin.version>3.0.5</tft.findbugs-maven-plugin.version>
<tft.gmaven-plugin.version>2.0</tft.gmaven-plugin.version>
<tft.gwt-maven-plugin.version>2.8.2</tft.gwt-maven-plugin.version>
<tft.jacoco-maven-plugin.version>0.8.6</tft.jacoco-maven-plugin.version>
<tft.javafx-maven-plugin.version>0.0.5</tft.javafx-maven-plugin.version>
<tft.javancss-maven-plugin.version>2.1</tft.javancss-maven-plugin.version>
<tft.jaxb2-maven-plugin.version>2.4</tft.jaxb2-maven-plugin.version>
<tft.jaxws-maven-plugin.version>2.3</tft.jaxws-maven-plugin.version>
<tft.license-maven-plugin.version>1.16</tft.license-maven-plugin.version>
<tft.m2e-lifecycle-mapping.version>1.0.0</tft.m2e-lifecycle-mapping.version>
<tft.nexus-staging-maven-plugin.version>1.6.8</tft.nexus-staging-maven-plugin.version>
<tft.sonar-maven-plugin.version>3.8</tft.sonar-maven-plugin.version>
<tft.spotbugs-maven-plugin.version>3.1.11</tft.spotbugs-maven-plugin.version>
<tft.tomcat-maven-plugin.version>2.2</tft.tomcat-maven-plugin.version>
<tft.vaadin-maven-plugin.version>12.0.2</tft.vaadin-maven-plugin.version>
<tft.versions-maven-plugin.version>2.8.1</tft.versions-maven-plugin.version>
<tft.wagon-maven-plugin.version>2.0.2</tft.wagon-maven-plugin.version>
<tft.webdav-jackrabbit.version>3.4.3</tft.webdav-jackrabbit.version>
<tft.xml-maven-plugin.version>1.0.2</tft.xml-maven-plugin.version>
<tft.archetype-packaging.version>${tft.maven-archetype-plugin.version}</tft.archetype-packaging.version>
</properties>
<scm>
<connection>scm:${tft.scm}:${scm.repo.readonly.url}</connection>
<developerConnection>scm:${tft.scm}:${scm.repo.effective.url}</developerConnection>
<url>${scm.repo.browse.url}</url>
<tag>4.15</tag>
</scm>
<prerequisites>
<maven>${tft.maven.requiredVersion}</maven>
</prerequisites>
<repositories>
<repository>
<id>snapshots-oss.sonatype.org</id>
<name>Sonatype Snapshots Repository</name>
<url>http://oss.sonatype.org/content/repositories/snapshots/</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<distributionManagement>
<repository>
<id>staging-oss.sonatype.org</id>
<name>Sonatype Release Repository</name>
<url>${tft.staging-repo.url}/service/local/staging/deploy/maven2</url>
</repository>
<snapshotRepository>
<id>snapshots-oss.sonatype.org</id>
<name>Sonatype Snapshot Repository</name>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
<build>
<defaultGoal>${tft.defaultGoal}</defaultGoal>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-webdav-jackrabbit</artifactId>
<version>${tft.webdav-jackrabbit.version}</version>
</extension>
<extension>
<groupId>org.vafer</groupId>
<artifactId>jdeb</artifactId>
<version>${tft.maven-jdeb-plugin.version}</version>
</extension>
</extensions>
<!-- For changeSet to be properly evaluated by assembly:single, use also the validate goal -->
<finalName>${project.artifactId}-${project.version}.${buildNumber}</finalName>
<!-- ***********************************************************************************************************
*
* We want reproducible builds, so all Maven plugins have explicit version numbers.
*
************************************************************************************************************ -->
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${tft.maven-compiler-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>${tft.maven-javadoc-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>${tft.maven-assembly-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${tft.maven-surefire-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<version>${tft.maven-surefire-report-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>${tft.maven-jar-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>${tft.maven-pmd-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>${tft.maven-checkstyle-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>${tft.maven-antrun-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>${tft.maven-deploy-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>${tft.maven-release-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>${tft.maven-gpg-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>${tft.maven-shade-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>${tft.maven-clean-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>${tft.maven-install-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>${tft.maven-resources-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>${tft.maven-site-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>${tft.maven-dependency-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-doap-plugin</artifactId>
<version>${tft.maven-doap-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jarsigner-plugin</artifactId>
<version>${tft.maven-jarsigner-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>${tft.maven-source-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-scm-plugin</artifactId>
<version>${tft.maven-scm-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>${tft.maven-war-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>${tft.maven-project-info-reports-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>${tft.aspectj-maven-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<version>${tft.buildnumber-maven-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>${tft.exec-maven-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>${tft.findbugs-maven-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
<version>${tft.spotbugs-maven-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>${tft.build-helper-maven-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>clirr-maven-plugin</artifactId>
<version>${tft.clirr-maven-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.codehaus.groovy.maven</groupId>
<artifactId>gmaven-plugin</artifactId>
<version>${tft.gmaven-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<version>${tft.gwt-maven-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>javancss-maven-plugin</artifactId>
<version>${tft.javancss-maven-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>${tft.jaxb2-maven-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>license-maven-plugin</artifactId>
<version>${tft.license-maven-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>${tft.sonar-maven-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>${tft.tomcat-maven-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>${tft.versions-maven-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>wagon-maven-plugin</artifactId>
<version>${tft.wagon-maven-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>xml-maven-plugin</artifactId>
<version>${tft.xml-maven-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>${tft.maven-bundle-plugin.version}</version>
</plugin>
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>maven-android-plugin</artifactId>
<version>${tft.maven-android-plugin.version}</version>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>${tft.docker-maven-plugin.version}</version>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>${tft.dockerfile-maven-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.fusesource.mvnplugins</groupId>
<artifactId>maven-graph-plugin</artifactId>
<version>${tft.maven-graph-plugin.version}</version>
</plugin>
<plugin>
<groupId>com.google.code.maven-replacer-plugin</groupId>
<artifactId>maven-replacer-plugin</artifactId>
<version>${tft.maven-replacer-plugin.version}</version>
</plugin>
<plugin>
<groupId>com.mycila.maven-license-plugin</groupId>
<artifactId>maven-license-plugin</artifactId>
<version>${tft.maven-license-plugin.version}</version>
</plugin>
<plugin>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-maven-plugin</artifactId>
<version>${tft.vaadin-maven-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>${tft.maven-jetty-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>${tft.nexus-staging-maven-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.jvnet.jax-ws-commons</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>${tft.jaxws-maven-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.vafer</groupId>
<artifactId>jdeb</artifactId>
<version>${tft.maven-jdeb-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<version>${tft.dependency-check-maven-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>${tft.javafx-maven-plugin.version}</version>
</plugin>
<!--
This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the
Maven build itself. Note that the plugin doesn't actually exist, it's just a placeholder used to
store some m2e configuration.
-->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>${tft.m2e-lifecycle-mapping.version}</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<versionRange>${tft.aspectj-maven-plugin.version}</versionRange>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute>
<runOnIncremental>true</runOnIncremental>
</execute>
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<versionRange>${tft.maven-enforcer-plugin.version}</versionRange>
<goals>
<goal>enforce</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin
</artifactId>
<versionRange>${tft.jaxb2-maven-plugin.version}</versionRange>
<goals>
<goal>xjc</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute>
<runOnIncremental>true</runOnIncremental>
</execute>
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.codehaus.mojo</groupId>
<artifactId>xml-maven-plugin</artifactId>
<versionRange>${tft.xml-maven-plugin.version}</versionRange>
<goals>
<goal>transform</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute>
<runOnIncremental>true</runOnIncremental>
</execute>
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<versionRange>${tft.maven-dependency-plugin.version}</versionRange>
<goals>
<goal>unpack</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute>
<runOnIncremental>true</runOnIncremental>
</execute>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<!-- ***********************************************************************************************************
*
*
*
************************************************************************************************************ -->
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>create</goal>
</goals>
</execution>
</executions>
<configuration>
<doCheck>false</doCheck>
<doUpdate>false</doUpdate>
<getRevisionOnlyOnce>${tft.buildNumber.getRevisionOnlyOnce}</getRevisionOnlyOnce>
<revisionOnScmFailure>unknown</revisionOnScmFailure>
<shortRevisionLength>12</shortRevisionLength>
</configuration>
</plugin>
<!-- Compiler -->
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<debug>${tft.javac.debug}</debug>
<optimize>${tft.javac.optimize}</optimize>
<source>${tft.javac.source}</source>
<target>${tft.javac.target}</target>
<showDeprecation>${tft.javac.showDeprecation}</showDeprecation>
<showWarnings>${tft.javac.showWarnings}</showWarnings>
<fork>${tft.javac.fork}</fork>
<compilerArgument>
${tft.javac.xlint}
</compilerArgument>
</configuration>
</plugin>
<!-- Assembler to produce final artifacts. -->
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<tarLongFileMode>gnu</tarLongFileMode>
<runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>
<!-- References to assembly descriptors are in profiles -->
</configuration>
</plugin>
<!-- Executes tests -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>${tft.test.skip}</skipTests>
<excludedGroups>${tft.test.excludedGroups}</excludedGroups>
<reportsDirectory>${tft.test.reportsDirectory}</reportsDirectory>
<includes>
<include>**/*Test.java</include>
</includes>
<!-- systemProperties>
<property>
</property>
</systemProperties -->
<argLine>-Xmx${tft.test.maxMemory} ${tft.test.vmOptions}</argLine>
<testFailureIgnore>${tft.test.failureIgnore}</testFailureIgnore>
<runOrder>alphabetical</runOrder>
<!-- properties> FIXME: doesn't work if left empty -> crashes surefire
<property>
<name>listener</name>
<value>${tft.test.listeners}</value>
</property>
</properties -->
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<configuration>
<mainClass>${tft.mainClass}</mainClass>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>${tft.jar.classpathInManifest}</addClasspath>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
</manifest>
<manifestEntries>
<Implementation-Title>${project.name}</Implementation-Title>
<Implementation-Version>${project.version}.${buildNumber}</Implementation-Version>
</manifestEntries>
</archive>
</configuration>
<executions>
<execution>
<id>default-test-jar</id>
<phase>package</phase>
<goals>
<goal>test-jar</goal>
</goals>
<configuration>
<skipIfEmpty>true</skipIfEmpty>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<configuration>
<skip>${tft.disableDeploy}</skip>
</configuration>
</plugin>
<!-- CheckStyle (not in a profile, to be used by NetBeans editor) -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>${tft.maven-checkstyle-plugin.version}</version>
<dependencies>
<dependency>
<groupId>it.tidalwave.thesefoolishthings</groupId>
<artifactId>superpom-config</artifactId>
<version>${tft.superpom.config.version}</version>
</dependency>
</dependencies>
<configuration>
<configLocation>it/tidalwave/checkstyle/checkstyle.xml</configLocation>
<skip>${tft.checkstyle.skip}</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>${tft.maven-pmd-plugin.version}</version>
<dependencies>
<dependency>
<groupId>it.tidalwave.thesefoolishthings</groupId>
<artifactId>superpom-config</artifactId>
<version>${tft.superpom.config.version}</version>
</dependency>
</dependencies>
<configuration>
<linkXref>true</linkXref>
<sourceEncoding>${project.build.sourceEncoding}</sourceEncoding>
<minimumTokens>100</minimumTokens>
<targetJdk>${tft.javac.source}</targetJdk>
<skip>${tft.pmd.skip}</skip>
<rulesets>
<ruleset>/it/tidalwave/pmd/basic.xml</ruleset>
</rulesets>
</configuration>
</plugin>
<!-- Configures the release process, calling the assembly to include extra artifacts in deploy -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<configuration>
<localCheckout>${tft.release.localCheckout}</localCheckout>
<pushChanges>${tft.release.pushChanges}</pushChanges>
<preparationGoals>${tft.release.preparationGoals}</preparationGoals>
<completionGoals>${tft.release.completionGoals}</completionGoals>
<goals>${tft.release.goals}</goals>
<arguments>-P${release.profiles} -DaltDeploymentRepository="${altDeploymentRepository}" -DdryRun=${dryRun}</arguments>
<tagNameFormat>@{project.version}</tagNameFormat>
</configuration>
</plugin>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<configuration>
<serverId>${tft.staging-repo.id}</serverId>
<nexusUrl>${tft.staging-repo.url}</nexusUrl>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>${tft.maven-enforcer-plugin.version}</version>
<executions>
<execution>
<id>enforce-maven</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireMavenVersion>
<version>${tft.maven.requiredVersion}</version>
</requireMavenVersion>
<requireJavaVersion>
<message>
To build this project JDK ${tft.maven.requiredJdk} is required. Please install it and properly set JAVA_HOME.
</message>
<version>${tft.maven.requiredJdk}</version>
</requireJavaVersion>
<requirePluginVersions>
<message>Best Practice is to always define plugin versions!</message>
<banLatest>true</banLatest>
<banRelease>true</banRelease>
<banSnapshots>true</banSnapshots>
<phases>clean,deploy,site</phases>
</requirePluginVersions>
<reactorModuleConvergence>
<message>The reactor is not valid</message>
<ignoreModuleDependencies>false</ignoreModuleDependencies>
</reactorModuleConvergence>
<!--<dependencyConvergence />-->
</rules>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>clirr-maven-plugin</artifactId>
<!-- Configuration must be replicated in reporting section -->
<configuration>
<skip>${tft.clirr.skip}</skip>
<failOnError>${tft.stableAPI}</failOnError>
<comparisonVersion>${tft.stableAPIVersion}</comparisonVersion>
<logResults>true</logResults>
<minSeverity>info</minSeverity>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<configuration>
<inputEncoding>${project.build.sourceEncoding}</inputEncoding>
<outputEncoding>${project.build.sourceEncoding}</outputEncoding>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>license-maven-plugin</artifactId>
<configuration>
<canUpdateCopyright>true</canUpdateCopyright>
<canUpdateDescription>true</canUpdateDescription>
<licenseName>${tft.license.name}</licenseName>
<licenseResolver>classpath://it/tidalwave/license</licenseResolver>
<addJavaLicenseAfterPackage>false</addJavaLicenseAfterPackage>
<verbose>false</verbose>
<addSvnKeyWords>true</addSvnKeyWords>
<descriptionTemplate>${tft.license.template}</descriptionTemplate>
<excludes>
<exclude>LICENSE.txt</exclude>
<exclude>**/*.form</exclude>
<exclude>**/*.mf</exclude>
<exclude>**/.description</exclude>
<exclude>.hgtags</exclude>
<exclude>.hgignore</exclude>
<exclude>.gitignore</exclude>
<exclude>.svnignore</exclude>
<exclude>**/.classpath</exclude>
<exclude>**/.settings</exclude>
<exclude>**/archetypes/**</exclude>
<exclude>**/*-profile</exclude>
</excludes>
<roots>
<root>src</root>
</roots>
</configuration>
<dependencies>
<dependency>
<groupId>it.tidalwave.thesefoolishthings</groupId>
<artifactId>superpom-config</artifactId>
<version>${tft.superpom.config.version}</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<!-- Configuration must be replicated in reporting section -->
<configuration>
<tags>
<tag>
<name>stable</name>
<placement>t</placement>
<head>Status: stable API</head>
</tag>
<tag>
<name>it.tidalwave.javadoc.stable</name>
<placement>t</placement>
<head>Status: stable API</head>
</tag>
<tag>
<name>draft</name>
<placement>t</placement>
<head>Status: draft API</head>
</tag>
<tag>
<name>it.tidalwave.javadoc.draft</name>
<placement>t</placement>
<head>Status: draft API</head>
</tag>
<tag>
<name>experimental</name>
<placement>t</placement>
<head>Status: experimental API</head>
</tag>
<tag>
<name>it.tidalwave.javadoc.experimental</name>
<placement>t</placement>
<head>Status: experimental API</head>
</tag>
</tags>
<docfilessubdirs>true</docfilessubdirs>
<excludePackageNames>${tft.javadoc.excludePackageNames}</excludePackageNames>
<skip>${tft.disableJavaDocs}</skip>
<failOnError>false</failOnError>
</configuration>
</plugin>
<plugin>
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<configuration>
<mainClass>${tft.mainClass}</mainClass>
</configuration>
</plugin>
</plugins>
</build>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>${tft.spring.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${tft.aspectjrt.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${tft.aspectjrt.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${tft.slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${tft.slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>${tft.slf4j.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>${tft.logback.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${tft.logback.version}</version>
</dependency>
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>${tft.jsr330.version}</version>
</dependency>
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>${tft.javax-annotation.version}</version>
</dependency>
<dependency>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-annotations</artifactId>
<version>${tft.findbugs-annotations.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${tft.lombok.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<profiles>
<!--====================================================================================================================================================
This profile is used in Continuous Integration.
=====================================================================================================================================================-->
<profile>
<id>it.tidalwave-ci-v1</id>
<properties>
<tft.test.excludedGroups>no-ci</tft.test.excludedGroups>
<testFailureIgnore>true</testFailureIgnore>
</properties>
</profile>
<!--====================================================================================================================================================
This profile is used in Continuous Integration to create QA metrics data.
=====================================================================================================================================================-->
<profile>
<id>it.tidalwave-metrics-v2</id>
<properties>
<tft.test.reportsDirectory>${project.build.directory}/surefire-reports/jacoco</tft.test.reportsDirectory>
<tft.test.failureIgnore>true</tft.test.failureIgnore>
</properties>
<build>
<defaultGoal>${tft.profile.metrics.defaultGoal}</defaultGoal>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<argLine>-Xmx${tft.test.maxMemory} ${tft.test.vmOptions} ${tft.test.jacoco.argLine}</argLine>
</configuration>
</plugin>
<!-- Jacoco -->
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${tft.jacoco-maven-plugin.version}</version>
<configuration>
<propertyName>tft.test.jacoco.argLine</propertyName>
<skipTests>${tft.test.skip}</skipTests>
<!--<destfile>${project.build.directory}/coverage-reports/jacoco-unit.exec</destfile>-->
<!--<datafile>${project.build.directory}/target/coverage-reports/jacoco-unit.exec</datafile>-->
</configuration>
<executions>
<execution>
<id>prepare-agent</id>
<!-- This properly sets ${tft.test.jacoco.argLine} so it's later used by Surefire -->
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- SpotBugs -->
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
<!-- version must be replicated here -->
<version>${tft.spotbugs-maven-plugin.version}</version>
<configuration>
<xmlOutput>true</xmlOutput>
<spotbugsXmlOutput>true</spotbugsXmlOutput>
<spotbugsXmlWithMessages>true</spotbugsXmlWithMessages>
<effort>Max</effort>
<threshold>Low</threshold>
<failOnError>false</failOnError>
<skip>${tft.spotbugs.skip}</skip>
</configuration>
</plugin>
</plugins>
</build>
<reporting>
<plugins>
<!-- Jacoco -->
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<!-- version must be replicated here -->
<version>${tft.jacoco-maven-plugin.version}</version>
</plugin>
<!-- SpotBugs -->
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
<!-- version must be replicated here -->
<version>${tft.spotbugs-maven-plugin.version}</version>
<configuration>
<xmlOutput>true</xmlOutput>
<spotbugsXmlOutput>true</spotbugsXmlOutput>
<spotbugsXmlWithMessages>true</spotbugsXmlWithMessages>
<effort>Max</effort>
<threshold>Low</threshold>
<failOnError>false</failOnError>
<skip>${tft.spotbugs.skip}</skip>
</configuration>
</plugin>
<!-- FindBugs, now deprecated -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<!-- version must be replicated here -->
<version>${tft.findbugs-maven-plugin.version}</version>
<configuration>
<xmlOutput>true</xmlOutput>
<findbugsXmlOutput>true</findbugsXmlOutput>
<findbugsXmlWithMessages>true</findbugsXmlWithMessages>
<effort>Max</effort>
<threshold>Low</threshold>
<failOnError>false</failOnError>
<skip>${tft.findbugs.skip}</skip>
</configuration>
</plugin>
<!-- PMD -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<!-- version must be replicated here -->
<version>${tft.maven-pmd-plugin.version}</version>
<configuration>
<linkXref>true</linkXref>
<sourceEncoding>${project.build.sourceEncoding}</sourceEncoding>
<minimumTokens>100</minimumTokens>
<targetJdk>${tft.javac.source}</targetJdk>
<skip>${tft.pmd.skip}</skip>
<rulesets>
<ruleset>/it/tidalwave/pmd/pmd.xml</ruleset>
</rulesets>
</configuration>
</plugin>
</plugins>
</reporting>
</profile>
<!--====================================================================================================================================================
This profile is activated during a release.
=====================================================================================================================================================-->
<profile>
<id>release</id>
<properties>
<skipTests>true</skipTests>
<dryRun>false</dryRun>
<altDeploymentRepository>release-repo-hudson::default::${staging.mvn.repo.url}</altDeploymentRepository>
</properties>
<build>
<finalName>${project.artifactId}-${project.version}</finalName>
<plugins>
<!-- FIXME: this directory is created in all submodules, only the master one is needed -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>clean-release-dirs</id>
<phase>initialize</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<delete dir="${project.build.directory}/target-maven-repo" />
</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!--====================================================================================================================================================
This profile signs the build artifacts. It is automatically enabled during a release; signing requires that the proper certificates have been locally
set up with PGP. If you want to skip signing, set the property tft.release.sign-artifacts.skip to true.
=====================================================================================================================================================-->
<profile>
<id>release-sign-artifacts</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<configuration>
<keyname>${gpg.keyname}</keyname>
<passphrase>${gpg.passphrase}</passphrase>
<skip>${tft.release.sign-artifacts.skip}</skip>
</configuration>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!--====================================================================================================================================================
This profile stores the current build description and Java version into a local file - used for Hudson builds.
=====================================================================================================================================================-->
<profile>
<id>generate-revision-id</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>generate-and-print-build-description</id>
<phase>validate</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<echo file="${tft.descriptionStamp}">
DESCRIPTION: ${env.GIT_BRANCH} ${project.version} ${buildNumber} ${line.separator}
</echo>
<loadfile property="tft.description" srcFile="${tft.descriptionStamp}" />
<echo>${tft.description}</echo>
<echo>Java Version: ${java.version} -source ${tft.javac.source} -target ${tft.javac.source}</echo>
</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!--====================================================================================================================================================
This profile prints the current build description and Java version - used for Hudson builds.
=====================================================================================================================================================-->
<profile>
<id>show-revision-id</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>print-build-description</id>
<phase>validate</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<loadfile property="tft.description" srcFile="${tft.descriptionStamp}" />
<echo>${tft.description}</echo>
<echo>Java Version: ${java.version} -source ${tft.javac.source} -target ${tft.javac.source}</echo>
</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!--====================================================================================================================================================
This profile detects Mercurial, it's used by the release-commit profile.
=====================================================================================================================================================-->
<profile>
<id>scm-detector-hg</id>
<activation>
<file>
<exists>.hg</exists>
</file>
</activation>
<properties>
<tft.scm-detector.hg>true</tft.scm-detector.hg>
</properties>
</profile>
<!--====================================================================================================================================================
This profile detects Git, it's used by the release-commit profile.
=====================================================================================================================================================-->
<profile>
<id>scm-detector-git</id>
<activation>
<file>
<exists>.git</exists>
</file>
</activation>
<properties>
<tft.scm-detector.git>true</tft.scm-detector.git>
</properties>
</profile>
<!--====================================================================================================================================================
This profile deploys local artifacts to the remote repository and pushes SCM changes after a successful staged release.
Run as mvn -N -Prelease-commit
=====================================================================================================================================================-->
<profile>
<id>release-commit</id>
<build>
<defaultGoal>initialize</defaultGoal>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>wagon-maven-plugin</artifactId>
<configuration>
<source>${staging.mvn.repo.url}</source>
<target>${project.distributionManagement.repository.url}</target>
<targetId>${project.distributionManagement.repository.id}</targetId>
<includes>*/**</includes>
</configuration>
<executions>
<execution>
<id>publish-repo</id>
<phase>initialize</phase>
<goals>
<goal>copy</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>push-hg</id>
<phase>initialize</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target name="push-hg" if="tft.scm-detector.hg">
<exec executable="hg" dir="${project.build.directory}">
<arg value="push" />
</exec>
</target>
</configuration>
</execution>
<execution>
<id>push-git</id>
<phase>initialize</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target name="push-git" if="tft.scm-detector.git">
<exec executable="git" dir="${project.build.directory}">
<arg value="push" />
<arg value="origin" />
<arg value="master" />
<arg value="--tags" />
</exec>
</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!--====================================================================================================================================================
This profile is executed when a staged release is canceled - it erases the local SCM repository. BEWARE: this has been designed to work with Jenkins,
not on your local workarea.
=====================================================================================================================================================-->
<profile>
<id>release-cancel</id>
<build>
<defaultGoal>initialize</defaultGoal>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>strip-hg</id>
<phase>initialize</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<!-- FIXME: would be better to strip local changes -->
<target name="strip-hg" if="tft.scm-detector.hg">
<delete dir="${project.build.directory}/.hg" />
</target>
</configuration>
</execution>
<execution>
<id>strip-git</id>
<phase>initialize</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<!-- FIXME: would be better to strip local changes -->
<target name="strip-git" if="tft.scm-detector.git">
<delete dir="${project.build.directory}/.git" />
</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!--====================================================================================================================================================
This profile deploys the extra artifacts that are created by the assembly plugin.
=====================================================================================================================================================-->
<profile>
<id>it.tidalwave-deploy-extra-artifacts-v2</id>
<properties>
<staging.mvn.repo.url>file://${project.build.directory}/../../target-maven-repo</staging.mvn.repo.url>
<altDeploymentRepository>release-repo-hudson::default::${staging.mvn.repo.url}</altDeploymentRepository>
</properties>
<build>
<defaultGoal>initialize assembly:single build-helper:attach-artifact verify deploy:deploy</defaultGoal>
<finalName>${project.artifactId}-${project.version}</finalName>
</build>
</profile>
<!--====================================================================================================================================================
This profiles creates an assembly 'bin' artifact if its configuration file is present.
=====================================================================================================================================================-->
<profile>
<id>it.tidalwave-assembly-bin-descriptor</id>
<activation>
<file>
<exists>src/assemble/bin.xml</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptors combine.children="append">
<descriptor>src/assemble/bin.xml</descriptor>
</descriptors>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<configuration>
<artifacts combine.children="append">
<artifact>
<file>${project.build.directory}/${project.build.finalName}-bin.tar.gz</file>
<type>tar.gz</type>
<classifier>bin</classifier>
</artifact>
</artifacts>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<!--====================================================================================================================================================
This profiles creates an assembly 'project' artifact if its configuration file is present.
=====================================================================================================================================================-->
<profile>
<id>it.tidalwave-assembly-project-descriptor</id>
<activation>
<file>
<exists>src/assemble/project.xml</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptors combine.children="append">
<descriptor>src/assemble/project.xml</descriptor>
</descriptors>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<configuration>
<artifacts combine.children="append">
<artifact>
<file>${project.build.directory}/${project.build.finalName}-project.tar.gz</file>
<type>tar.gz</type>
<classifier>project</classifier>
</artifact>
</artifacts>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<!--====================================================================================================================================================
This profile configures Tomcat for the build. Create an empty file in src/config/activate-tomcat-profile to activate it.
=====================================================================================================================================================-->
<profile>
<id>tomcat</id>
<activation>
<file>
<exists>src/config/activate-tomcat-profile</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<server>${tft.webapp.deployServerId}</server>
<url>${tft.webapp.deployServerUrl}</url>
<path>${tft.webapp.contextPath}</path>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<!--====================================================================================================================================================
This profile configures Jetty for the build. Create an empty file in src/config/activate-jetty-profile to activate it.
=====================================================================================================================================================-->
<profile>
<id>jetty</id>
<activation>
<file>
<exists>src/config/activate-jetty-profile</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<configuration>
<connectors>
<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
<port>${tft.jetty.port}</port>
<maxIdleTime>60000</maxIdleTime>
</connector>
</connectors>
<stopPort>${tft.jetty.stopPort}</stopPort>
<stopKey>${tft.jetty.stopKey}</stopKey>
<scanIntervalSeconds>${tft.jetty.scanIntervalSeconds}</scanIntervalSeconds>
<webAppConfig>
<contextPath>${tft.webapp.contextPath}</contextPath>
<baseResource implementation="org.mortbay.resource.ResourceCollection">
<!-- Workaround for Maven/Jetty issue http://jira.codehaus.org/browse/JETTY-680 -->
<!-- <resources>src/main/webapp,${project.build.directory}/${project.build.finalName}</resources> -->
<resourcesAsCSV>src/main/webapp,${project.build.directory}/${project.build.finalName}</resourcesAsCSV>
</baseResource>
</webAppConfig>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<!--====================================================================================================================================================
This profile configures AspectJ for Spring in the build. Create an empty file in src/config/activate-it.tidalwave.aspectj-springaop-v1-profile to
activate it.
This profile arranges things so that AspectJ is compatible with other tools that manipulate the bytecode, such as annotation processors (e.g. Lombok).
The original, unwoven classes are stored in target/unwoven-classes and target/unwoven-test-classes.
=====================================================================================================================================================-->
<profile>
<id>it.tidalwave-aspectj-springaop-v1</id>
<activation>
<file>
<exists>src/config/activate-it.tidalwave-aspectj-springaop-v1-profile</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<executions>
<execution>
<id>default-compile</id>
<phase>compile</phase>
<configuration>
<outputDirectory>${tft.project.build.unwoven-classes.directory}</outputDirectory>
</configuration>
</execution>
<execution>
<id>default-testCompile</id>
<phase>test-compile</phase>
<configuration>
<outputDirectory>${tft.project.build.unwoven-test-classes.directory}</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<!-- Create the target directories for unwoven classes -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>create-unwoven-classes-dirs</id>
<phase>initialize</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<mkdir dir="${tft.project.build.unwoven-classes.directory}" />
<mkdir dir="${tft.project.build.unwoven-test-classes.directory}" />
</target>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<configuration>
<Xlint>ignore</Xlint>
<source>${tft.javac.source}</source>
<complianceLevel>${tft.javac.source}</complianceLevel>
<target>${tft.javac.target}</target>
<!-- Prevent ajc from finding sources -->
<sources />
<testSources />
<!-- This is important because sometimes the plugin decides that there's nothing to do
because sources are not specified -->
<forceAjcCompile>true</forceAjcCompile>
<showWeaveInfo>${tft.aspectj.ajc.verbose}</showWeaveInfo>
<verbose>${tft.aspectj.ajc.verbose}</verbose>
<aspectLibraries>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</dependency>
</aspectLibraries>
</configuration>
<executions>
<execution>
<id>weave-classes</id>
<phase>process-classes</phase>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<weaveDirectories>
<weaveDirectory>${tft.project.build.unwoven-classes.directory}</weaveDirectory>
</weaveDirectories>
</configuration>
</execution>
<execution>
<id>weave-test-classes</id>
<phase>process-test-classes</phase>
<goals>
<goal>test-compile</goal>
</goals>
<configuration>
<weaveDirectories>
<weaveDirectory>${tft.project.build.unwoven-test-classes.directory}</weaveDirectory>
</weaveDirectories>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${tft.aspectjrt.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>${tft.aspectjrt.version}</version>
</dependency>
<!-- Fix for JDK 9 and later - should be unnecessary when version 1.11.1 is releaded. -->
<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<version>${java.version}</version>
<scope>system</scope>
<systemPath>${project.basedir}/pom.xml</systemPath>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
</exclusion>
<exclusion>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
</dependency>
</dependencies>
</profile>
<!--====================================================================================================================================================
This profile compiles custom Vaadin widgets into GWT components.
=====================================================================================================================================================-->
<profile>
<id>vaadin-compile-widgetset</id>
<build>
<plugins>
<!-- Compile custom GWT components or widget dependencies with the GWT compiler -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<configuration>
<webappDirectory>src/main/webapp/VAADIN/widgetsets</webappDirectory>
<extraJvmArgs>-Xmx512M -Xss1024k</extraJvmArgs>
<runTarget>${project.artifactId}</runTarget>
<soyc>false</soyc>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-dev</artifactId>
<version>${tft.gwt.version}</version>
</dependency>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-user</artifactId>
<version>${tft.gwt.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</profile>
<!--====================================================================================================================================================
This profile configures the jarbundler for the build. Create an empty file in activate-it.tidalwave-javafx-embedded-appbundle-v1-profile to activate it.
=====================================================================================================================================================-->
<profile>
<id>it.tidalwave-javafx-appbundle-embedded-v1</id>
<activation>
<file>
<exists>src/config/activate-it.tidalwave-javafx-appbundle-embedded-v1-profile</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack-embedded-jdk</id>
<phase>generate-resources</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>${tft.embedded-jdk-groupId}</groupId>
<artifactId>${tft.embedded-jdk-artifactId}</artifactId>
<version>${tft.embedded-jdk-version}</version>
<type>tgz</type>
<classifier>${tft.embedded-jdk-classifier}</classifier>
<overWrite>true</overWrite>
<outputDirectory>${project.basedir}/target/jdk/${tft.embedded-jdk-name}</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
<execution>
<id>copy-application</id>
<phase>generate-resources</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<excludeTransitive>false</excludeTransitive>
<excludeArtifactIds>javafx-embedded</excludeArtifactIds>
<includeScope>runtime</includeScope>
<outputDirectory>${project.build.directory}/application</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>create-app-bundle</id>
<phase>pre-integration-test</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<taskdef name="bundleapp" classname="com.oracle.appbundler.AppBundlerTask" classpath="src/main/app-resources/appbundler-${tft.appbundler.version}.jar" />
<!-- FIXME applicationCategory="public.app-category.developer-tools"-->
<!-- FIXME: way to specify min Java version? -->
<bundleapp outputdirectory="${project.build.directory}" name="${tft.appbundle.name}" displayname="${tft.appbundle.name}" icon="src/main/app-resources/${tft.appbundle.name}.icns" identifier="${project.groupId}" shortversion="${project.version}" mainclassname="${tft.mainClass}" signature="${tft.appbundle.signature}">
<runtime dir="${project.build.directory}/jdk/${tft.embedded-jdk-name}/Contents/Home" />
<classpath dir="${project.basedir}" casesensitive="yes">
<include name="target/application/*.jar" />
</classpath>
<options value="${tft.javafx.vmargs}" />
<option value="-Dcom.apple.mrj.application.apple.menu.about.name=${tft.appbundle.name}" />
<option value="-Xdock:name=${tft.appbundle.name}" />
<option value="-Xbootclasspath/a:$APP_ROOT/Contents/PlugIns/${tft.embedded-jdk-name}/Contents/Home/jre/lib/jfxrt.jar" />
</bundleapp>
<exec dir="${project.build.directory}" os="Mac OS X" executable="hdiutil">
<arg value="create" />
<arg value="-noanyowners" />
<arg value="-imagekey" />
<arg value="zlib-level=1" />
<arg value="-srcfolder" />
<arg value="${tft.appbundle.name}.app" />
<arg value="${tft.appbundle.name}.dmg" />
</exec>
<exec dir="${project.build.directory}" os="Linux" executable="${tft.genisoimage}">
<arg value="-V" />
<arg value="${tft.appbundle.name}" />
<arg value="-U" />
<arg value="-f" />
<arg value="-D" />
<arg value="-l" />
<arg value="-L" />
<arg value="-allow-multidot" />
<arg value="-max-iso9660-filenames" />
<arg value="-relaxed-filenames" />
<arg value="-no-iso-translate" />
<arg value="-r" />
<arg value="-o" />
<arg value="${tft.appbundle.name}.dmg" />
<arg value="-root" />
<arg value="${tft.appbundle.name}.app" />
<arg value="${tft.appbundle.name}.app" />
</exec>
<gzip src="${project.build.directory}/${tft.appbundle.name}.dmg" destfile="${project.build.directory}/${tft.appbundle.name}.dmg.gz" />
</target>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>attach-app-bundle</id>
<phase>pre-integration-test</phase>
<goals>
<goal>attach-artifact</goal>
</goals>
<configuration>
<artifacts>
<artifact>
<file>${project.build.directory}/${tft.appbundle.name}.dmg.gz</file>
<type>dmg.gz</type>
<classifier>executable</classifier>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!--====================================================================================================================================================
This profile configures the jarbundler for the build. Create an empty file in src/config/activate-it.tidalwave-javafx-appbundle-v1-profile to activate
it.
=====================================================================================================================================================-->
<profile>
<id>it.tidalwave-javafx-appbundle-v1</id>
<activation>
<file>
<exists>src/config/activate-it.tidalwave-javafx-appbundle-v1-profile</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-application</id>
<phase>generate-resources</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<excludeTransitive>false</excludeTransitive>
<includeScope>runtime</includeScope>
<!-- FIXME: workaround until we're able to put it in bootclasspath -->
<!--<excludeArtifactIds>javafx-embedded</excludeArtifactIds>-->
<outputDirectory>${project.build.directory}/application</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>create-app-bundle</id>
<phase>pre-integration-test</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<taskdef name="bundleapp" classname="com.oracle.appbundler.AppBundlerTask" classpath="src/main/app-resources/appbundler-${tft.appbundler.version}.jar" />
<!-- FIXME applicationCategory="public.app-category.developer-tools"-->
<!-- FIXME: way to specify min Java version? -->
| way to specify min Java version? --> | |
<bundleapp outputdirectory="${project.build.directory}" name="${tft.appbundle.name}" displayname="${tft.appbundle.name}" icon="src/main/app-resources/${tft.appbundle.name}.icns" identifier="${project.groupId}" shortversion="${project.version}" mainclassname="${tft.mainClass}" signature="${tft.appbundle.signature}">
<classpath dir="${project.basedir}" casesensitive="yes">
<include name="target/application/*.jar" />
</classpath>
<options value="${tft.javafx.vmargs}" />
<option value="-Dcom.apple.mrj.application.apple.menu.about.name=${tft.appbundle.name}" />
<option value="-Xdock:name=${tft.appbundle.name}" />
</bundleapp>
<exec dir="${project.build.directory}" os="Mac OS X" executable="hdiutil">
<arg value="create" />
<arg value="-noanyowners" />
<arg value="-imagekey" />
<arg value="zlib-level=1" />
<arg value="-srcfolder" />
<arg value="${tft.appbundle.name}.app" />
<arg value="${tft.appbundle.name}.dmg" />
</exec>
<exec dir="${project.build.directory}" os="Linux" executable="${tft.genisoimage}">
<arg value="-V" />
<arg value="${tft.appbundle.name}" />
<arg value="-U" />
<arg value="-f" />
<arg value="-D" />
<arg value="-l" />
<arg value="-L" />
<arg value="-allow-multidot" />
<arg value="-max-iso9660-filenames" />
<arg value="-relaxed-filenames" />
<arg value="-no-iso-translate" />
<arg value="-r" />
<arg value="-o" />
<arg value="${tft.appbundle.name}.dmg" />
<arg value="-root" />
<arg value="${tft.appbundle.name}.app" />
<arg value="${tft.appbundle.name}.app" />
</exec>
<gzip src="${project.build.directory}/${tft.appbundle.name}.dmg" destfile="${project.build.directory}/${tft.appbundle.name}.dmg.gz" />
</target>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>attach-app-bundle</id>
<phase>pre-integration-test</phase>
<goals>
<goal>attach-artifact</goal>
</goals>
<configuration>
<artifacts>
<artifact>
<file>${project.build.directory}/${tft.appbundle.name}.dmg.gz</file>
<type>dmg.gz</type>
<classifier>executable</classifier>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<executions>
<execution>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
<configuration>
<reportSets>
<reportSet>
<reports>
<report>aggregate</report>
</reports>
</reportSet>
</reportSets>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<!--====================================================================================================================================================
This profile enables the management of web resources under src/main/webapp, used for applications with embedded web servers.
=====================================================================================================================================================-->
<profile>
<id>it.tidalwave-webresources-v1</id>
<activation>
<file>
<exists>src/config/activate-it.tidalwave-webresources-v1-profile</exists>
</file>
</activation>
<build>
<resources>
<resource>
<directory>src/main/webapp</directory>
<targetPath>webapp</targetPath>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
</profile>
<!--====================================================================================================================================================
This profile builds a tar.gz assembly if it founds it descriptor at src/main/assembly/tar.gz.xml.
=====================================================================================================================================================-->
<profile>
<id>it.tidalwave-assembly-tar.gz-v1</id>
<activation>
<file>
<exists>src/main/assembly/tar.gz.xml</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptors combine.children="append">
<descriptor>src/main/assembly/tar.gz.xml</descriptor>
</descriptors>
<runOnlyAtExecutionRoot>false</runOnlyAtExecutionRoot>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!--====================================================================================================================================================
This profile builds a zip assembly if it founds it descriptor at src/main/assembly/zip.xml.
=====================================================================================================================================================-->
<profile>
<id>it.tidalwave-assembly-zip-v1</id>
<activation>
<file>
<exists>src/main/assembly/zip.xml</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptors combine.children="append">
<descriptor>src/main/assembly/zip.xml</descriptor>
</descriptors>
<runOnlyAtExecutionRoot>false</runOnlyAtExecutionRoot>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!--====================================================================================================================================================
This profile prepares the files for an installer, by copying all the jar dependencies to 'dist/lib' and the local resources to 'dist'.
=====================================================================================================================================================-->
<profile>
<id>it.tidalwave-distribution-v1</id>
<activation>
<file>
<exists>src/config/activate-it.tidalwave-distribution-v1-profile</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-resources</id>
<phase>generate-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/dist</outputDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>generate-resources</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<includeScope>runtime</includeScope>
<overWrite>true</overWrite>
<outputDirectory>${project.build.directory}/dist/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!--====================================================================================================================================================
This profile is the base configuration for creating a deb package It must be activated by creating the file
'src/config/activate-it.tidalwave-deb-v1-profile'.
The product name must be defined in
* tft.deb.name
and will be installed to ${tft.deb.binaryDirectory}/${tft.deb.name}.
The files to be placed in the installer are extracted from a tarball defined by:
* tft.deb.sourceTarball.groupId (defaults to ${project.id})
* tft.deb.sourceTarball.artifactId
* tft.deb.sourceTarball.version (defaults to ${project.version})
* tft.deb.sourceTarball.classifier (defaults to 'bin')
The binaries directory is speficied by:
* tft.deb.binaryDirectory (defaults to /usr/lib)
Files are packaged with uid/gid defined by
* tft.deb.user (defaults to root)
* tft.deb.group (defaults to root)
This profile must be activated together with it.tidalwave-deb-service-v1 or it.tidalwave-deb-application-v1.
=====================================================================================================================================================-->
<profile>
<id>it.tidalwave-deb-base-v1</id>
<activation>
<file>
<exists>src/config/activate-it.tidalwave-deb-v1-profile</exists>
</file>
</activation>
<properties>
<tft.deb.sourceTarball.groupId>${project.groupId}</tft.deb.sourceTarball.groupId>
<tft.deb.sourceTarball.version>${project.version}</tft.deb.sourceTarball.version>
<tft.deb.sourceTarball.classifier>bin</tft.deb.sourceTarball.classifier>
<tft.deb.binaryDirectory>/usr/lib</tft.deb.binaryDirectory>
<tft.deb.user>root</tft.deb.user>
<tft.deb.group>root</tft.deb.group>
</properties>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>generate-resources</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>${tft.deb.sourceTarball.groupId}</groupId>
<artifactId>${tft.deb.sourceTarball.artifactId}</artifactId>
<version>${tft.deb.sourceTarball.version}</version>
<classifier>${tft.deb.sourceTarball.classifier}</classifier>
<type>tar.gz</type>
<overWrite>true</overWrite>
<outputDirectory>${project.build.directory}</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.vafer</groupId>
<artifactId>jdeb</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jdeb</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- TODO: copyright? -->
<dataSet combine.children="append">
<data>
<type>archive</type>
<src>
${project.build.directory}/${tft.deb.sourceTarball.artifactId}-${tft.deb.sourceTarball.version}-${tft.deb.sourceTarball.classifier}.tar.gz
</src>
<mapper>
<type>perm</type>
<prefix>${tft.deb.binaryDirectory}</prefix>
<user>${tft.deb.user}</user>
<group>${tft.deb.group}</group>
<!-- no permissions, preserved those in the tarball -->
</mapper>
</data>
<data>
<type>link</type>
<linkName>${tft.deb.binaryDirectory}/${tft.deb.name}</linkName>
<linkTarget>${tft.deb.binaryDirectory}/${tft.deb.name}-${project.version}</linkTarget>
<symlink>true</symlink>
<mapper>
<type>perm</type>
<user>${tft.deb.user}</user>
<group>${tft.deb.group}</group>
</mapper>
</data>
</dataSet>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<!--====================================================================================================================================================
This profile completes the configuration for creating a deb package for a service. It must be activated by creating the file
'src/config/activate-it.tidalwave-deb-service-v1-profile'.
The deb package will have all the required stuff under /etc/systemd/system to automatically start the service.
Furthermore the following working directories will be created:
* /var/lib/${tft.deb.directory}
* /var/log/${tft.deb.directory}
* /var/cache/${tft.deb.directory}
The value of tft.deb.directory defaults to ${tft.deb.name}.
=====================================================================================================================================================-->
<profile>
<id>it.tidalwave-deb-service-v1</id>
<activation>
<file>
<exists>src/config/activate-it.tidalwave-deb-service-v1-profile</exists>
</file>
</activation>
<properties>
<tft.deb.directory>${tft.deb.name}</tft.deb.directory>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.vafer</groupId>
<artifactId>jdeb</artifactId>
<configuration>
<dataSet combine.children="append">
<data>
<type>file</type>
<src>${project.build.directory}/classes/${tft.deb.name}.service</src>
<dst>/etc/systemd/system/${tft.deb.name}.service</dst>
<mapper>
<type>perm</type>
<user>${tft.deb.user}</user>
<group>${tft.deb.group}</group>
</mapper>
</data>
<data>
<type>template</type>
<paths>
<path>/var/lib/${tft.deb.directory}</path>
<path>/var/log/${tft.deb.directory}</path>
<path>/var/cache/${tft.deb.directory}</path>
</paths>
<mapper>
<type>perm</type>
<user>${tft.deb.user}</user>
<group>${tft.deb.group}</group>
</mapper>
</data>
<!-- FIXME: take it from the tarball? -->
<data>
<type>directory</type>
<src>${project.build.directory}/classes/config</src>
<includes>**/*</includes>
<mapper>
<prefix>/var/lib/${tft.deb.directory}/config</prefix>
<type>perm</type>
<user>${tft.deb.user}</user>
<group>${tft.deb.group}</group>
</mapper>
</data>
</dataSet>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<!--====================================================================================================================================================
This profile completes the configuration for creating a deb package for an application It must be activated by creating the file
'src/config/activate-it.tidalwave-deb-application-v1-profile'.
The deb package will have an executable alias under /usr/bin.
=====================================================================================================================================================-->
<profile>
<id>it.tidalwave-deb-application-v1</id>
<activation>
<file>
<exists>src/config/activate-it.tidalwave-deb-application-v1-profile</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.vafer</groupId>
<artifactId>jdeb</artifactId>
<configuration>
<dataSet combine.children="append">
<data>
<type>link</type>
<linkName>/usr/bin/${tft.deb.name}</linkName>
<linkTarget>${tft.deb.binaryDirectory}/${tft.deb.name}/bin/${tft.deb.name}</linkTarget>
<symlink>true</symlink>
<mapper>
<type>perm</type>
<user>${tft.deb.user}</user>
<group>${tft.deb.group}</group>
<dirmode>755</dirmode>
<filemode>644</filemode>
</mapper>
</data>
</dataSet>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<!--====================================================================================================================================================
=====================================================================================================================================================-->
<profile>
<id>it.tidalwave.deb-sign</id>
<activation>
<property>
<name>gpg.keyname</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.vafer</groupId>
<artifactId>jdeb</artifactId>
<configuration>
<signPackage>true</signPackage>
<signMethod>dpkg-sig</signMethod>
<signRole>origin</signRole>
<key>${gpg.keyname}</key>
<passphrase>${gpg.passphrase}</passphrase>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<!--====================================================================================================================================================
=====================================================================================================================================================-->
<profile>
<id>it.tidalwave.use-local-artifact-target-repo-v1</id>
<properties>
<altDeploymentRepository>local-repo::default::${staging.mvn.repo.url}</altDeploymentRepository>
</properties>
</profile>
<!--====================================================================================================================================================
Deploys to a public repo those artifacts that have been generated during a release process and stored in a local repository. Run as:
mvn -N -Pit.tidalwave.publish-artifacts-v1
Note: on Mac OS X you need to run this with -Djava.io.tmpdir=/tmp (or other directory).
=====================================================================================================================================================-->
<profile>
<id>it.tidalwave.publish-artifacts-v1</id>
<properties>
<wagon.source>${staging.mvn.repo.url}</wagon.source>
<wagon.target>https://oss.sonatype.org/content/repositories/snapshots</wagon.target>
<wagon.targetId>snapshots-oss.sonatype.org</wagon.targetId>
</properties>
<build>
<defaultGoal>initialize org.codehaus.mojo:wagon-maven-plugin:copy</defaultGoal>
</build>
</profile>
<!--====================================================================================================================================================
This profile updates all the dependencies to their latest release. The project must be structured in the standard TheseFoolishThings layout. Run as:
mvn -N -Pit.tidalwave-update-releases-v1
=====================================================================================================================================================-->
<profile>
<id>it.tidalwave-update-releases-v1</id>
<build>
<defaultGoal>initialize</defaultGoal>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>update-properties</goal>
</goals>
<configuration>
<allowSnapshots>false</allowSnapshots>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!--====================================================================================================================================================
This profile updates all the dependencies to their latest snapshots. The project must be structured in the standard TheseFoolishThings layout. Run as:
mvn -N -Pit.tidalwave-update-snapshots-v1
=====================================================================================================================================================-->
<profile>
<id>it.tidalwave-update-snapshots-v1</id>
<build>
<defaultGoal>initialize</defaultGoal>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>update-properties</goal>
</goals>
<configuration>
<allowSnapshots>true</allowSnapshots>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!--====================================================================================================================================================
This profile updates the headers of files.
=====================================================================================================================================================-->
<profile>
<id>it.tidalwave-update-headers</id>
<properties>
<tft.license.template>${basedir}/target/it/tidalwave/license/filtered/tidalwave-header-description.ftl</tft.license.template>
</properties>
<build>
<defaultGoal>initialize</defaultGoal>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>it.tidalwave.thesefoolishthings</groupId>
<artifactId>superpom-config</artifactId>
<version>${tft.superpom.config.version}</version>
<overWrite>true</overWrite>
<outputDirectory>${basedir}/target/superpom-config</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/it/tidalwave/license/filtered</outputDirectory>
<resources>
<resource>
<directory>${basedir}/target/superpom-config/it/tidalwave/license</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>license-maven-plugin</artifactId>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>update-file-header</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!--====================================================================================================================================================
This profile checks the headers of files.
=====================================================================================================================================================-->
<profile>
<id>it.tidalwave-check-headers</id>
<properties>
<tft.license.template>${basedir}/target/it/tidalwave/license/filtered/tidalwave-header-description.ftl</tft.license.template>
</properties>
<build>
<defaultGoal>initialize</defaultGoal>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>it.tidalwave.thesefoolishthings</groupId>
<artifactId>superpom-config</artifactId>
<version>${tft.superpom.config.version}</version>
<overWrite>true</overWrite>
<outputDirectory>${basedir}/target/superpom-config</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/it/tidalwave/license/filtered</outputDirectory>
<resources>
<resource>
<directory>${basedir}/target/superpom-config/it/tidalwave/license</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>license-maven-plugin</artifactId>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>check-file-header</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!--====================================================================================================================================================
This profile generates the README.md from the pom metadata.
=====================================================================================================================================================-->
<profile>
<id>it.tidalwave-generate-readme-md-v1</id>
<build>
<defaultGoal>dependency:unpack resources:copy-resources</defaultGoal>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<configuration>
<artifactItems>
<artifactItem>
<groupId>it.tidalwave.thesefoolishthings</groupId>
<artifactId>superpom-config</artifactId>
<version>${tft.superpom.config.version}</version>
<type>jar</type>
<overWrite>true</overWrite>
<outputDirectory>${project.basedir}/target/superpom-resources</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<resources>
<resource>
<directory>${project.basedir}/target/superpom-resources/it/tidalwave/readme/</directory>
<filtering>true</filtering>
</resource>
</resources>
<outputDirectory>.</outputDirectory>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<!--====================================================================================================================================================
This profile applies the compiler property 'tft.javac.release' for Java 9 and later.
=====================================================================================================================================================-->
<profile>
<id>javac-jdk9plus</id>
<activation>
<jdk>[9,)</jdk>
</activation>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<release>${tft.javac.release}</release>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<!--====================================================================================================================================================
This profile properly configures the javadoc doclet for Java 9 and later.
=====================================================================================================================================================-->
<profile>
<id>umldoclet-jdk9plus</id>
<activation>
<jdk>[9,)</jdk>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<!-- Configuration must be replicated in reporting section -->
<configuration>
<doclet>${tft.javadoc.doclet}</doclet>
<docletArtifact>
<groupId>${tft.javadoc.doclet.groupId}</groupId>
<artifactId>${tft.javadoc.doclet.artifactId}</artifactId>
<version>${tft.javadoc.doclet.version}</version>
</docletArtifact>
<additionalparam>${tft.javadoc.doclet.additionalParam} ${tft.javadoc.doclint}</additionalparam>
<useStandardDocletOptions>true</useStandardDocletOptions>
</configuration>
</plugin>
</plugins>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<!-- Configuration must be replicated in build section -->
<configuration>
<doclet>${tft.javadoc.doclet}</doclet>
<docletArtifact>
<groupId>${tft.javadoc.doclet.groupId}</groupId>
<artifactId>${tft.javadoc.doclet.artifactId}</artifactId>
<version>${tft.javadoc.doclet.version}</version>
</docletArtifact>
<additionalparam>${tft.javadoc.doclet.additionalParam} ${tft.javadoc.doclint}</additionalparam>
<useStandardDocletOptions>true</useStandardDocletOptions>
</configuration>
</plugin>
</plugins>
</reporting>
</profile>
<!--====================================================================================================================================================
This profile generates a Surefire report for the site. When used together with the it.tidalwave-metrics-v2 profile it automatically adds 'site' at
the end of the default goal.
Properties:
+ tft.test.report.aggregate: to activate an aggregate report.
=====================================================================================================================================================-->
<profile>
<id>it-tidalwave-test-report-v1</id>
<properties>
<tft.test.reportsDirectory>${project.build.directory}/surefire-reports</tft.test.reportsDirectory> <!-- See SUP-235 -->
<tft.profile.metrics.siteGoal>site</tft.profile.metrics.siteGoal>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<configuration>
<skipSurefireReport>${tft.maven-surefire-report-plugin.skip}</skipSurefireReport>
<aggregate>${tft.test.report.aggregate}</aggregate>
</configuration>
</plugin>
</plugins>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<configuration>
<skipSurefireReport>${tft.maven-surefire-report-plugin.skip}</skipSurefireReport>
<aggregate>${tft.test.report.aggregate}</aggregate>
<!--
<reportsDirectories>
<reportDirectory>target/surefire-reports/plain</reportDirectory>
</reportsDirectories>
-->
</configuration>
</plugin>
</plugins>
</reporting>
</profile>
<!--====================================================================================================================================================
This profile activates the 'docs-maven-skin' option for rendering a site.
=====================================================================================================================================================-->
<profile>
<id>it.tidalwave-site-docs-maven-skin-v1</id>
<activation>
<file>
<exists>src/config/activate-it.tidalwave-site-docs-maven-skin-v1-profile</exists>
</file>
</activation>
<properties>
<tft.site.skin.version>2.0.11</tft.site.skin.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<dependencies>
<dependency>
<groupId>com.bernardomg.maven.skins</groupId>
<artifactId>docs-maven-skin</artifactId>
<version>${tft.site.skin.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</profile>
<!--====================================================================================================================================================
This profile adds OpenJavaFX artifacts to dependency management when JDK 11 or above is used.
=====================================================================================================================================================-->
<profile>
<id>it.tidalwave-javafx-v1</id>
<activation>
<jdk>[11,)</jdk>
</activation>
<properties>
<tft.javafx.version>11.0.1</tft.javafx.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-base</artifactId>
<version>${tft.javafx.version}</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>${tft.javafx.version}</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>${tft.javafx.version}</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-graphics</artifactId>
<version>${tft.javafx.version}</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-media</artifactId>
<version>${tft.javafx.version}</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-swing</artifactId>
<version>${tft.javafx.version}</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-swt</artifactId>
<version>${tft.javafx.version}</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-web</artifactId>
<version>${tft.javafx.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
</profile>
</profiles>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<!-- Version must be copied here because of http://jira.codehaus.org/browse/MSITE-443 -->
<version>${tft.maven-javadoc-plugin.version}</version>
<!-- Configuration must be replicated in build section -->
<configuration>
<tags>
<tag>
<name>stable</name>
<placement>t</placement>
<head>Status: stable API</head>
</tag>
<tag>
<name>it.tidalwave.javadoc.stable</name>
<placement>t</placement>
<head>Status: stable API</head>
</tag>
<tag>
<name>draft</name>
<placement>t</placement>
<head>Status: draft API</head>
</tag>
<tag>
<name>it.tidalwave.javadoc.draft</name>
<placement>t</placement>
<head>Status: draft API</head>
</tag>
<tag>
<name>experimental</name>
<placement>t</placement>
<head>Status: experimental API</head>
</tag>
<tag>
<name>it.tidalwave.javadoc.experimental</name>
<placement>t</placement>
<head>Status: experimental API</head>
</tag>
</tags>
<docfilessubdirs>true</docfilessubdirs>
<excludePackageNames>${tft.javadoc.excludePackageNames}</excludePackageNames>
<skip>${tft.disableJavaDocs}</skip>
<failOnError>false</failOnError>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>clirr-maven-plugin</artifactId>
<!-- Version must be copied here because of http://jira.codehaus.org/browse/MSITE-443 -->
<version>${tft.clirr-maven-plugin.version}</version>
<!-- Configuration must be replicated in build section -->
<configuration>
<skip>${tft.clirr.skip}</skip>
<failOnError>${tft.stableAPI}</failOnError>
<comparisonVersion>${tft.stableAPIVersion}</comparisonVersion>
<logResults>true</logResults>
<minSeverity>info</minSeverity>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>javancss-maven-plugin</artifactId>
<!-- Version must be copied here because of http://jira.codehaus.org/browse/MSITE-443 -->
<version>${tft.javancss-maven-plugin.version}</version>
<configuration>
<skip>${tft.javancss.skip}</skip>
</configuration>
<!-- Configuration must be replicated in build section -->
</plugin>
</plugins>
</reporting>
</project>