pom-scijava-base
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency>
<groupId>org.scijava</groupId>
<artifactId>pom-scijava-base</artifactId>
<version>11.0.0</version>
</dependency><?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.scijava</groupId>
<artifactId>pom-scijava-base</artifactId>
<version>11.0.0</version>
<packaging>pom</packaging>
<name>SciJava Base POM</name>
<description>This POM is a base which SciJava-based projects can extend to inherit helpful build configuration. It ensures that projects all use a compatible build environment, including versions of Maven plugins and Java itself. It does _not_ provide any dependency version management; see org.scijava:pom-scijava for that.</description>
<url>https://scijava.org/</url>
<inceptionYear>2016</inceptionYear>
<organization>
<name>SciJava</name>
<url>https://scijava.org/</url>
</organization>
<licenses>
<license>
<name>CC0 1.0 Universal License</name>
<url>https://creativecommons.org/publicdomain/zero/1.0/</url>
<distribution>repo</distribution>
</license>
</licenses>
<developers>
<developer>
<id>ctrueden</id>
<name>Curtis Rueden</name>
<url>https://imagej.net/User:Rueden</url>
<roles>
<role>founder</role>
<role>lead</role>
<role>developer</role>
<role>debugger</role>
<role>reviewer</role>
<role>support</role>
<role>maintainer</role>
</roles>
</developer>
</developers>
<contributors>
<contributor>
<name>Mark Hiner</name>
<url>https://imagej.net/User:Hinerm</url>
<properties><id>hinerm</id></properties>
</contributor>
<contributor>
<name>Johannes Schindelin</name>
<url>https://imagej.net/User:Schindelin</url>
<properties><id>dscho</id></properties>
</contributor>
<contributor>
<name>Barry DeZonia</name>
<url>https://imagej.net/User:Bdezonia</url>
<properties><id>bdezonia</id></properties>
</contributor>
<contributor>
<name>Stefan Helfrich</name>
<url>https://imagej.net/User:Stelfrich</url>
<properties><id>stelfrich</id></properties>
</contributor>
<contributor>
<name>Jean-Yves Tinevez</name>
<url>https://imagej.net/User:JeanYvesTinevez</url>
<properties><id>tinevez</id></properties>
</contributor>
<contributor>
<name>Lorenzo Scianatico</name>
<url>https://imagej.net/User:LoreScianatico</url>
<properties><id>LoreScianatico</id></properties>
</contributor>
<contributor>
<name>Jan Eglinger</name>
<url>https://imagej.net/User:Eglinger</url>
<properties><id>imagejan</id></properties>
</contributor>
<contributor>
<name>Ulrik Günther</name>
<url>https://imagej.net/User:Skalarproduktraum</url>
<properties><id>skalarproduktraum</id></properties>
</contributor>
<contributor>
<name>Igor Pisarev</name>
</contributor>
<contributor>
<name>Ed Savailonei</name>
</contributor>
</contributors>
<mailingLists>
<mailingList>
<name>SciJava</name>
<subscribe>https://groups.google.com/group/scijava</subscribe>
<unsubscribe>https://groups.google.com/group/scijava</unsubscribe>
<post>scijava@googlegroups.com</post>
<archive>https://groups.google.com/group/scijava</archive>
</mailingList>
</mailingLists>
<scm>
<connection>scm:git:git://github.com/scijava/pom-scijava-base</connection>
<developerConnection>scm:git:git@github.com:scijava/pom-scijava-base</developerConnection>
<tag>pom-scijava-base-11.0.0</tag>
<url>https://github.com/scijava/pom-scijava-base</url>
</scm>
<issueManagement>
<system>GitHub Issues</system>
<url>https://github.com/scijava/pom-scijava-base/issues</url>
</issueManagement>
<ciManagement>
<system>Travis CI</system>
<url>https://travis-ci.org/scijava/pom-scijava-base</url>
</ciManagement>
<properties>
<!-- Project configuration -->
<!--
The main class of the project. Used in several ways:
* Set as the Main-Class attribute of the JAR manifest.
* dist profile: main class for the JavaFX launchers.
* exec profile: main class to execute.
* jdb profile: main class when launching jdb.
-->
<main-class />
<!-- Package attribute of the JAR artifact. -->
<package-name>${package-guess}</package-name>
<!-- Premain-Class attribute of the JAR artifact. -->
<premain-class />
<!--
Automatic-Module-Name attribute of the JAR artifact, to be used for
Java 9+. Required if the auto-generated name would not be acceptable
(would include reserved words etc.). Set to package name by default.
See: https://stackoverflow.com/a/46501811/478765
-->
<automatic-module-name>${package-name}</automatic-module-name>
<!-- Classifier of the artifact generated by the uberjar profile. -->
<uberjar-classifier>all</uberjar-classifier>
<!--
The License which license-maven-plugin will use to populate.
See: license:update-file-header, license:update-project-license
-->
<license.licenseName>N/A</license.licenseName>
<!-- Project blurb to use in license headers atop each file. -->
<license.projectName>${project.description}</license.projectName>
<!-- Copyright owners to use in license headers atop each file. -->
<license.copyrightOwners>N/A</license.copyrightOwners>
<!-- Classes the enforcer allows to be duplicated on the classpath. -->
<allowedDuplicateClasses />
<!-- Extra maven-surefire-plugin args. -->
<scijava.surefire.args />
<!-- Compiler configuration. -->
<scijava.jvm.version>1.8</scijava.jvm.version>
<scijava.jvm.test.version>${scijava.jvm.version}</scijava.jvm.test.version>
<!-- NB: 1.8.0_101 is needed for SciJava Maven repository HTTPS support. -->
<scijava.jvm.build.version>[1.8.0-101,1.8.9999]</scijava.jvm.build.version>
<maven.compiler.source>${scijava.jvm.version}</maven.compiler.source>
<maven.compiler.target>${scijava.jvm.version}</maven.compiler.target>
<maven.compiler.testSource>${scijava.jvm.test.version}</maven.compiler.testSource>
<maven.compiler.testTarget>${scijava.jvm.test.version}</maven.compiler.testTarget>
<!--
Workaround for a bug in maven-compiler-plugin.
See https://issues.apache.org/jira/browse/MCOMPILER-209
-->
<maven.compiler.useIncrementalCompilation>false</maven.compiler.useIncrementalCompilation>
<!-- Minimum required Maven version to build the project. -->
<scijava.mvn.version>3.3.9</scijava.mvn.version>
<!-- List of groupIds for which build reproducibility is enforced. -->
<scijava.groupIds>org.scijava,net.imagej,net.imglib2,io.scif,sc.fiji</scijava.groupIds>
<!--
List of valid developer and contributor roles.
See: https://imagej.net/Team
-->
<scijava.team.roles>founder,lead,developer,debugger,reviewer,support,maintainer</scijava.team.roles>
<!--
The coding-style property defines a coding style to be used in your project.
Supported values as of this writing are scijava and imglib2.
-->
<scijava.coding-style>scijava</scijava.coding-style>
<!--
Classifier name for referencing platform-specific artifacts.
By default, this matches the scijava/native-lib-loader naming scheme.
-->
<scijava.natives.classifier>natives-${scijava.platform.family.medium}_${scijava.platform.bits}</scijava.natives.classifier>
<!-- Additional configuration -->
<!-- NB: Avoid platform encoding warning when copying resources. -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- NB: Specify formatting of the maven.build.timestamp property. -->
<maven.build.timestamp.format>yyyy-MM-dd'T'HH:mm:ssZ</maven.build.timestamp.format>
<!-- NB: Deploy to OSS Sonatype repository by default when releasing. -->
<releaseProfiles>sonatype-oss-release</releaseProfiles>
<!-- Plugin versions -->
<!-- Core Maven plugins -->
<maven-antrun-plugin.version>1.8</maven-antrun-plugin.version>
<maven-assembly-plugin.version>3.1.1</maven-assembly-plugin.version>
<maven-clean-plugin.version>3.1.0</maven-clean-plugin.version>
<maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
<maven-dependency-plugin.version>3.1.1</maven-dependency-plugin.version>
<maven-deploy-plugin.version>2.8.2</maven-deploy-plugin.version>
<maven-enforcer-plugin.version>1.4.1</maven-enforcer-plugin.version>
<maven-failsafe-plugin.version>2.22.2</maven-failsafe-plugin.version>
<maven-gpg-plugin.version>1.6</maven-gpg-plugin.version>
<maven-install-plugin.version>2.5.2</maven-install-plugin.version>
<maven-invoker-plugin.version>3.2.0</maven-invoker-plugin.version>
<maven-jar-plugin.version>3.1.2</maven-jar-plugin.version>
<maven-javadoc-plugin.version>3.1.0</maven-javadoc-plugin.version>
<maven-plugin-plugin.version>3.6.0</maven-plugin-plugin.version>
<maven-release-plugin.version>2.5.3</maven-release-plugin.version>
<maven-resources-plugin.version>3.1.0</maven-resources-plugin.version>
<maven-shade-plugin.version>3.2.1</maven-shade-plugin.version>
<maven-site-plugin.version>3.7.1</maven-site-plugin.version>
<maven-source-plugin.version>3.1.0</maven-source-plugin.version>
<maven-surefire-plugin.version>2.22.2</maven-surefire-plugin.version>
<!-- Mojohaus Maven plugins -->
<build-helper-maven-plugin.version>3.0.0</build-helper-maven-plugin.version>
<buildnumber-maven-plugin.version>1.4</buildnumber-maven-plugin.version>
<cobertura-maven-plugin.version>2.7</cobertura-maven-plugin.version>
<exec-maven-plugin.version>1.6.0</exec-maven-plugin.version>
<groovy-maven-plugin.version>1.5</groovy-maven-plugin.version>
<license-maven-plugin.version>1.20</license-maven-plugin.version>
<versions-maven-plugin.version>2.7</versions-maven-plugin.version>
<!-- Other Maven plugins -->
<dokka-maven-plugin.version>0.9.18</dokka-maven-plugin.version>
<formatter-maven-plugin.version>2.10.0</formatter-maven-plugin.version>
<impsort-maven-plugin.version>1.2.0</impsort-maven-plugin.version>
<jacoco-maven-plugin.version>0.8.4</jacoco-maven-plugin.version>
<javafx-maven-plugin.version>8.8.3</javafx-maven-plugin.version>
<maven-graph-plugin.version>1.45</maven-graph-plugin.version>
<nexus-staging-maven-plugin.version>1.6.8</nexus-staging-maven-plugin.version>
<scijava-maven-plugin.version>2.0.0</scijava-maven-plugin.version>
<!-- Plugin dependencies -->
<extra-enforcer-rules.version>1.2</extra-enforcer-rules.version>
<kotlin.version>1.3.72</kotlin.version>
<scijava-coding-style.version>2.0.0</scijava-coding-style.version>
<velocity.version>1.7</velocity.version>
<!-- Build extensions -->
<wagon-webdav-jackrabbit.version>1.0</wagon-webdav-jackrabbit.version>
</properties>
<build>
<!-- It is nice for "mvn" with no arguments to do something reasonable. -->
<defaultGoal>install</defaultGoal>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>${maven-antrun-plugin.version}</version>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>${maven-assembly-plugin.version}</version>
</plugin>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>${maven-clean-plugin.version}</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
</plugin>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<version>${maven-dependency-plugin.version}</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>${maven-deploy-plugin.version}</version>
</plugin>
<plugin>
<artifactId>maven-enforcer-plugin</artifactId>
<version>${maven-enforcer-plugin.version}</version>
<dependencies>
<dependency>
<groupId>org.codehaus.mojo</groupId>
<artifactId>extra-enforcer-rules</artifactId>
<version>${extra-enforcer-rules.version}</version>
</dependency>
<dependency>
<groupId>org.scijava</groupId>
<artifactId>scijava-maven-plugin</artifactId>
<version>${scijava-maven-plugin.version}</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>${maven-failsafe-plugin.version}</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-gpg-plugin</artifactId>
<version>${maven-gpg-plugin.version}</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
<configuration>
<useAgent>true</useAgent>
</configuration>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>${maven-install-plugin.version}</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>${maven-jar-plugin.version}</version>
<!-- Always add classpath to JAR manifests. -->
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
<mainClass>${main-class}</mainClass>
<packageName>${package-name}</packageName>
</manifest>
<manifestEntries>
<Premain-Class>${premain-class}</Premain-Class>
<!-- Add SCM revision from buildnumber plugin, if available. -->
<Implementation-Build>${buildNumber}</Implementation-Build>
<!-- Add a formatted timestamp for the build. -->
<Implementation-Date>${maven.build.timestamp}</Implementation-Date>
<!-- Set the Java 9 automatic module name. -->
<Automatic-Module-Name>${automatic-module-name}</Automatic-Module-Name>
</manifestEntries>
</archive>
<skipIfEmpty>true</skipIfEmpty>
</configuration>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<!--
NB: The same version declaration and configuration block also appears
in the <reporting> section, and must be kept in sync.
-->
<version>${maven-javadoc-plugin.version}</version>
<configuration>
<maxmemory>1024m</maxmemory>
<!--
Workaround for javadoc bug when classes in the default
package access classes from non-default packages. See:
https://bugs.java.com/bugdatabase/view_bug.do?bug_id=5101868
-->
<use>false</use>
<links>
<!-- Core Java. -->
<link>https://javadoc.scijava.org/Java/</link>
<!-- SciJava and related projects and forks. -->
<link>https://javadoc.scijava.org/SciJava/</link>
<link>https://javadoc.scijava.org/Alida/</link>
<link>https://javadoc.scijava.org/Bio-Formats/</link>
<link>https://javadoc.scijava.org/FLIMLib/</link>
<link>https://javadoc.scijava.org/Fiji/</link>
<link>https://javadoc.scijava.org/Icy/</link>
<link>https://javadoc.scijava.org/ImageJ/</link>
<link>https://javadoc.scijava.org/ImageJ1/</link>
<link>https://javadoc.scijava.org/ImgLib2/</link>
<link>https://javadoc.scijava.org/Java3D/</link>
<link>https://javadoc.scijava.org/KNIME/</link>
<link>https://javadoc.scijava.org/LOCI/</link>
<link>https://javadoc.scijava.org/MiToBo/</link>
<link>https://javadoc.scijava.org/Micro-Manager-Core/</link>
<link>https://javadoc.scijava.org/Micro-Manager-Studio/</link>
<link>https://javadoc.scijava.org/MorphoLibJ/</link>
<link>https://javadoc.scijava.org/OMERO/</link>
<link>https://javadoc.scijava.org/SCIFIO/</link>
<!-- Third party projects. -->
<link>https://javadoc.scijava.org/Apache-Commons-IO/</link>
<link>https://javadoc.scijava.org/Apache-Commons-Lang/</link>
<link>https://javadoc.scijava.org/Apache-Commons-Math/</link>
<link>https://javadoc.scijava.org/Apache-Commons-Text/</link>
<link>https://javadoc.scijava.org/BoneJ/</link>
<link>https://javadoc.scijava.org/Eclipse/</link>
<link>https://javadoc.scijava.org/Guava/</link>
<link>https://javadoc.scijava.org/JAMA/</link>
<link>https://javadoc.scijava.org/JFreeChart/</link>
<link>https://javadoc.scijava.org/JGraphT/</link>
<link>https://javadoc.scijava.org/JHotDraw/</link>
<link>https://javadoc.scijava.org/JOML/</link>
<link>https://javadoc.scijava.org/Javassist/</link>
<link>https://javadoc.scijava.org/MigLayout/</link>
<link>https://javadoc.scijava.org/NetBeans/</link>
<link>https://javadoc.scijava.org/Pivot/</link>
<link>https://javadoc.scijava.org/VisAD/</link>
<link>https://javadoc.scijava.org/Weka/</link>
<link>https://javadoc.scijava.org/ojAlgo/</link>
</links>
</configuration>
</plugin>
<plugin>
<artifactId>maven-plugin-plugin</artifactId>
<version>${maven-plugin-plugin.version}</version>
</plugin>
<plugin>
<artifactId>maven-release-plugin</artifactId>
<version>${maven-release-plugin.version}</version>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>${maven-resources-plugin.version}</version>
</plugin>
<plugin>
<artifactId>maven-shade-plugin</artifactId>
<version>${maven-shade-plugin.version}</version>
</plugin>
<plugin>
<artifactId>maven-site-plugin</artifactId>
<version>${maven-site-plugin.version}</version>
</plugin>
<plugin>
<artifactId>maven-source-plugin</artifactId>
<version>${maven-source-plugin.version}</version>
<!-- Build source artifact in addition to main artifact. -->
<executions>
<!--
NB: Attach sources with jar goal, not jar-no-fork, to avoid a bug
where the -sources JAR gets generated and deployed twice. See:
https://issues.apache.org/jira/browse/MNG-5939
-->
<execution>
<id>attach-sources</id>
<phase>none</phase>
</execution>
<execution>
<id>attach-sources-jar</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
<!--
Make sure that:
A) unit tests run with sufficient RAM allocated;
B) unit tests do not pop a Java dock icon on OS X;
C) additional args can be given via scijava.surefire.args property;
Sometimes, one needs to pass JVM options to the JVM running the
unit tests, such as -verbose:class or -Djava.awt.headless=true.
Unfortunately, maven-surefire does not expose a command-line
interface to do so, therefore let's simulate it by using our
own property 'scijava.surefire.args' to specify those options.
-->
<configuration>
<argLine>@{argLine} -Xms512m -Xmx512m -Dapple.awt.UIElement="true" ${scijava.surefire.args}</argLine>
</configuration>
</plugin>
<!--
Build Helper Maven plugin -
https://www.mojohaus.org/build-helper-maven-plugin/
-->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>${build-helper-maven-plugin.version}</version>
<executions>
<!--
Create a version string which conforms to Java packaging requirements.
https://docs.oracle.com/javase/8/docs/technotes/guides/versioning/spec/versioning2.html#wp89936
In particular, the standard Java packaging tool will fail unless the
version string conforms to Java packaging rules. Further reading:
https://docs.oracle.com/javase/8/docs/technotes/guides/deploy/packaging.html#
-->
<execution>
<id>sanitize-version</id>
<goals>
<goal>regex-property</goal>
</goals>
<configuration>
<name>sanitizedVersion</name>
<value>${project.version}</value>
<regex>^([0-9]+)\.([0-9]+)\.([0-9]+).*$</regex>
<replacement>$1.$2.$3</replacement>
<failIfNoMatch>false</failIfNoMatch>
</configuration>
</execution>
<!--
Make a guess at a reasonable & legal package prefix. This value
is used for package-name and automatic-module-name by default.
-->
<execution>
<id>guess-package</id>
<goals>
<goal>regex-property</goal>
</goals>
<configuration>
<name>package-guess</name>
<value>${project.groupId}.${project.artifactId}</value>
<regex>[^a-z0-9_.]+</regex>
<replacement>_</replacement>
<failIfNoMatch>false</failIfNoMatch>
</configuration>
</execution>
</executions>
</plugin>
<!--
Build Number Maven plugin -
https://www.mojohaus.org/buildnumber-maven-plugin/
This plugin embeds a build number in the JAR manifest.
-->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<version>${buildnumber-maven-plugin.version}</version>
<!-- Record SCM revision in manifest. -->
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>create</goal>
</goals>
</execution>
</executions>
<configuration>
<getRevisionOnlyOnce>true</getRevisionOnlyOnce>
<revisionOnScmFailure>UNKNOWN</revisionOnScmFailure>
</configuration>
</plugin>
<!--
Cobertura Maven plugin -
https://www.mojohaus.org/cobertura-maven-plugin/
This plugin measures code coverage of tests.
-->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>${cobertura-maven-plugin.version}</version>
<configuration>
<formats>
<format>html</format>
<format>xml</format>
</formats>
</configuration>
</plugin>
<!--
Exec Maven plugin -
https://www.mojohaus.org/exec-maven-plugin/
This plugin launches a Java class using Maven.
-->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>${exec-maven-plugin.version}</version>
</plugin>
<!--
License Maven plugin -
https://www.mojohaus.org/license-maven-plugin/
This plugin manages project licenses and source file headers.
-->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>license-maven-plugin</artifactId>
<version>${license-maven-plugin.version}</version>
<configuration>
<addJavaLicenseAfterPackage>false</addJavaLicenseAfterPackage>
<canUpdateDescription>true</canUpdateDescription>
<canUpdateCopyright>true</canUpdateCopyright>
<extraExtensions>
<bsh>java</bsh>
<config>properties</config>
<ijm>java</ijm>
</extraExtensions>
</configuration>
</plugin>
<!--
Versions Maven plugin -
https://www.mojohaus.org/versions-maven-plugin/
Check for new plugin versions using
"mvn versions:display-plugin-updates"
-->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>${versions-maven-plugin.version}</version>
</plugin>
<!--
JaCoCo Maven plugin -
https://www.jacoco.org/jacoco/trunk/doc/maven.html
This plugin measures code coverage of tests.
-->
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco-maven-plugin.version}</version>
<executions>
<execution>
<id>jacoco-initialize</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>jacoco-site</id>
<phase>package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
<!--
JavaFX Maven plugin -
https://github.com/javafx-maven-plugin/javafx-maven-plugin
Generate platform-specific application bundles using "mvn jfx:native"
-->
<plugin>
<groupId>com.zenjava</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>${javafx-maven-plugin.version}</version>
<configuration>
<appName>${project.name}</appName>
<identifier>${project.name}</identifier>
<jfxMainAppJarName>${project.name}.jar</jfxMainAppJarName>
<mainClass>${main-class}</mainClass>
<nativeReleaseVersion>${sanitizedVersion}</nativeReleaseVersion>
<verbose>true</verbose>
</configuration>
</plugin>
<!--
Maven Graph Plugin -
Generate a dependency graph using "mvn graph:reactor"
-->
<plugin>
<groupId>org.fusesource.mvnplugins</groupId>
<artifactId>maven-graph-plugin</artifactId>
<version>${maven-graph-plugin.version}</version>
<configuration>
<hideScopes>provided,runtime,system,test</hideScopes>
<hideTransitive>true</hideTransitive>
<label>Dependency Graph for ${project.name}</label>
<target>${project.build.directory}/dependency-graph.dot</target>
</configuration>
</plugin>
<!-- SciJava Maven plugin - https://github.com/scijava/scijava-maven-plugin -->
<plugin>
<groupId>org.scijava</groupId>
<artifactId>scijava-maven-plugin</artifactId>
<version>${scijava-maven-plugin.version}</version>
<executions>
<execution>
<id>set-rootdir</id>
<phase>validate</phase>
<goals>
<goal>set-rootdir</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Formatter Maven Plugin - https://github.com/revelc/formatter-maven-plugin -->
<plugin>
<groupId>net.revelc.code.formatter</groupId>
<artifactId>formatter-maven-plugin</artifactId>
<version>${formatter-maven-plugin.version}</version>
<dependencies>
<dependency>
<groupId>org.scijava</groupId>
<artifactId>scijava-coding-style</artifactId>
<version>${scijava-coding-style.version}</version>
</dependency>
</dependencies>
<configuration>
<configFile>eclipse-formatter-settings/${scijava.coding-style}-coding-style.xml</configFile>
</configuration>
</plugin>
<!-- ImpSort Maven Plugin - https://github.com/revelc/impsort-maven-plugin -->
<plugin>
<groupId>net.revelc.code</groupId>
<artifactId>impsort-maven-plugin</artifactId>
<version>${impsort-maven-plugin.version}</version>
<configuration>
<groups>java.,javax.,com.,net.,org.</groups>
<staticGroups>java,*</staticGroups>
<removeUnused>true</removeUnused>
</configuration>
<executions>
<execution>
<phase>none</phase>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<!-- Check desired rules during maven lifecycle. -->
<plugin>
<artifactId>maven-enforcer-plugin</artifactId>
<executions>
<execution>
<id>enforce-rules</id>
<goals>
<goal>enforce</goal>
</goals>
</execution>
</executions>
<configuration>
<rules>
<!--
Standard Rules
https://maven.apache.org/enforcer/enforcer-rules/
-->
<requireMavenVersion>
<version>${scijava.mvn.version}</version>
</requireMavenVersion>
<requirePluginVersions>
<message>Plugins need to be versioned!</message>
</requirePluginVersions>
<requireJavaVersion>
<version>${scijava.jvm.build.version}</version>
</requireJavaVersion>
<!--
Extra Enforcer Rules
org.codehaus.mojo:extra-enforcer-rules
https://www.mojohaus.org/extra-enforcer-rules/
-->
<!--
Ensure no two dependencies ship the same class.
Otherwise, much havoc may be wreaked at runtime.
-->
<banDuplicateClasses>
<message>No Duplicate Classes Allowed!
- For duplicate transitive dependencies, add dependency exclusions.
- For duplications between direct dependencies, resolve or add
ignored classes to this rule's configuration.</message>
<findAllDuplicates>true</findAllDuplicates>
<ignoreClasses>${allowedDuplicateClasses}</ignoreClasses>
</banDuplicateClasses>
<!--
Require developers and contributors to use SciJava team roles.
See: https://imagej.net/Team
-->
<requireDeveloperRoles>
<validRoles>${scijava.team.roles}</validRoles>
</requireDeveloperRoles>
<requireContributorRoles>
<validRoles>${scijava.team.roles}</validRoles>
</requireContributorRoles>
<!--
Fail if a dependency requires a too-new version of Java.
-->
<enforceBytecodeVersion>
<maxJdkVersion>${scijava.jvm.version}</maxJdkVersion>
<excludes>
<exclude>com.headius:invokebinder</exclude>
<exclude>com.sun:tools</exclude>
</excludes>
<ignoreClasses>
<ignoreClass>module-info</ignoreClass>
</ignoreClasses>
<ignoredScopes>
<ignoredScope>test</ignoredScope>
</ignoredScopes>
</enforceBytecodeVersion>
<!--
Do not allow circular dependencies.
Mostly impossible anyway, but... just in case.
-->
<banCircularDependencies />
<!--
SciJava Maven Plugin
org.scijava:scijava-maven-plugin
https://github.com/scijava/scijava-maven-plugin
-->
<!-- Require inheriting POMs to populate key elements. -->
<requireElements implementation="org.scijava.maven.plugin.enforcer.RequireElements">
<elements>
<element>name</element>
<element>description</element>
<element>url</element>
<element>inceptionYear</element>
<element>organization</element>
<element>licenses</element>
<element>developers</element>
<element>contributors</element>
<element>mailingLists</element>
<element>scm</element>
<element>issueManagement</element>
<element>ciManagement</element>
<element>properties//license.licenseName</element>
<element>properties//license.copyrightOwners</element>
</elements>
</requireElements>
<!--
Require builds to be reproducible.
This means no snapshot dependencies!
-->
<requireReproducibleBuilds implementation="org.scijava.maven.plugin.enforcer.RequireReproducibleBuilds">
<groupIds>${scijava.groupIds}</groupIds>
</requireReproducibleBuilds>
</rules>
</configuration>
</plugin>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
</plugin>
<!-- Create -sources.jar when building. -->
<plugin>
<artifactId>maven-source-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
</plugin>
<!-- Generate a package-friendly version property. -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
</plugin>
<!-- Add Implementation-Build entry to JAR manifest. -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
</plugin>
<!-- Enable 'graph:' goals. -->
<plugin>
<groupId>org.fusesource.mvnplugins</groupId>
<artifactId>maven-graph-plugin</artifactId>
</plugin>
<!-- Enable 'jfx:' goals. -->
<plugin>
<groupId>com.zenjava</groupId>
<artifactId>javafx-maven-plugin</artifactId>
</plugin>
<!--
Enable 'scijava:' goals and copying the artifacts
and dependencies by setting the 'scijava.app.directory'
property to a valid directory.
-->
<plugin>
<groupId>org.scijava</groupId>
<artifactId>scijava-maven-plugin</artifactId>
<configuration>
<deleteOtherVersionsPolicy>older</deleteOtherVersionsPolicy>
</configuration>
<executions>
<execution>
<id>populate-app</id>
<phase>install</phase>
<goals>
<goal>populate-app</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Formatter Maven Plugin - https://github.com/revelc/formatter-maven-plugin -->
<plugin>
<groupId>net.revelc.code.formatter</groupId>
<artifactId>formatter-maven-plugin</artifactId>
</plugin>
<!-- ImpSort Maven Plugin - https://github.com/revelc/impsort-maven-plugin -->
<plugin>
<groupId>net.revelc.code</groupId>
<artifactId>impsort-maven-plugin</artifactId>
</plugin>
<!-- JaCoCo Maven plugin - https://www.jacoco.org/jacoco/trunk/doc/maven.html -->
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
</plugin>
</plugins>
<!--
We use wagon-webdav-jackrabbit 1.0 for deploys, since it is
compatible with both Maven 2.2.x and Maven 3.x cross-platform.
-->
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-webdav-jackrabbit</artifactId>
<version>${wagon-webdav-jackrabbit.version}</version>
</extension>
</extensions>
</build>
<reporting>
<plugins>
<!-- Generate javadocs as part of site generation. -->
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<!--
NB: The following version declaration and configuration block are fully
replicated from the pluginManagement section. This is necessary because
many versions of maven-site-plugin (including 3.3) do not respect the
pluginManagement values.
See: https://issues.apache.org/jira/browse/MSITE-443
While the maven-site-plugin documentation states that it "search[es]
the same groupId/artifactId in the build.pluginManagement.plugins
section", this claim unfortunately does not seem to reflect reality.
-->
<version>${maven-javadoc-plugin.version}</version>
<configuration>
<maxmemory>1024m</maxmemory>
<!--
Workaround for javadoc bug when classes in the default
package access classes from non-default packages.
See: https://bugs.java.com/bugdatabase/view_bug.do?bug_id=5101868
-->
<use>false</use>
<links>
<!-- Core Java. -->
<link>https://javadoc.scijava.org/Java/</link>
<!-- SciJava and related projects and forks. -->
<link>https://javadoc.scijava.org/SciJava/</link>
<link>https://javadoc.scijava.org/Alida/</link>
<link>https://javadoc.scijava.org/Bio-Formats/</link>
<link>https://javadoc.scijava.org/FLIMLib/</link>
<link>https://javadoc.scijava.org/Fiji/</link>
<link>https://javadoc.scijava.org/Icy/</link>
<link>https://javadoc.scijava.org/ImageJ/</link>
<link>https://javadoc.scijava.org/ImageJ1/</link>
<link>https://javadoc.scijava.org/ImgLib2/</link>
<link>https://javadoc.scijava.org/Java3D/</link>
<link>https://javadoc.scijava.org/KNIME/</link>
<link>https://javadoc.scijava.org/LOCI/</link>
<link>https://javadoc.scijava.org/MiToBo/</link>
<link>https://javadoc.scijava.org/Micro-Manager-Core/</link>
<link>https://javadoc.scijava.org/Micro-Manager-Studio/</link>
<link>https://javadoc.scijava.org/MorphoLibJ/</link>
<link>https://javadoc.scijava.org/OMERO/</link>
<link>https://javadoc.scijava.org/SCIFIO/</link>
<!-- Third party projects. -->
<link>https://javadoc.scijava.org/Apache-Commons-IO/</link>
<link>https://javadoc.scijava.org/Apache-Commons-Lang/</link>
<link>https://javadoc.scijava.org/Apache-Commons-Math/</link>
<link>https://javadoc.scijava.org/Apache-Commons-Text/</link>
<link>https://javadoc.scijava.org/BoneJ/</link>
<link>https://javadoc.scijava.org/Eclipse/</link>
<link>https://javadoc.scijava.org/Guava/</link>
<link>https://javadoc.scijava.org/JAMA/</link>
<link>https://javadoc.scijava.org/JFreeChart/</link>
<link>https://javadoc.scijava.org/JGraphT/</link>
<link>https://javadoc.scijava.org/JHotDraw/</link>
<link>https://javadoc.scijava.org/JOML/</link>
<link>https://javadoc.scijava.org/Javassist/</link>
<link>https://javadoc.scijava.org/MigLayout/</link>
<link>https://javadoc.scijava.org/NetBeans/</link>
<link>https://javadoc.scijava.org/Pivot/</link>
<link>https://javadoc.scijava.org/VisAD/</link>
<link>https://javadoc.scijava.org/Weka/</link>
<link>https://javadoc.scijava.org/ojAlgo/</link>
</links>
</configuration>
</plugin>
</plugins>
</reporting>
<profiles>
<!--
The groovy-code-generation profile provides a uniform way to generate
sources from templates using Groovy. Apache Velocity, a powerful templating
engine, is automatically available for use from Groovy. For an example of
use, see the ImageJ Ops project: https://github.com/imagej/imagej-ops
-->
<profile>
<id>groovy-code-generation</id>
<activation>
<file>
<!-- NB: No property, because profile activation is too early. -->
<exists>${basedir}/src/main/groovy/generate.groovy</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<!-- Add generated code, including tests, to the build. -->
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>${project.build.directory}/generated-sources/from-template/</source>
</sources>
</configuration>
</execution>
<execution>
<id>add-test-source</id>
<phase>generate-test-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>${project.build.directory}/generated-test-sources/from-template/</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
<!--
Groovy Maven plugin -
https://www.mojohaus.org/groovy-maven-plugin/
This plugin offers execution of Groovy scripts as part of the build.
SciJava uses it for automatic code generation with Apache Velocity.
-->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>groovy-maven-plugin</artifactId>
<version>${groovy-maven-plugin.version}</version>
<dependencies>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId>
<version>${velocity.version}</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<properties>
<templateDirectory>${basedir}/src/main/templates</templateDirectory>
<outputDirectory>${project.build.directory}/generated-sources/from-template</outputDirectory>
</properties>
<source>${basedir}/src/main/groovy/generate.groovy</source>
</configuration>
</execution>
<execution>
<id>generate-test-sources</id>
<phase>generate-test-sources</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<properties>
<templateDirectory>${basedir}/src/test/templates</templateDirectory>
<outputDirectory>${project.build.directory}/generated-test-sources/from-template</outputDirectory>
</properties>
<source>${basedir}/src/main/groovy/generate.groovy</source>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!--
The kotlin profile enables support for Kotlin projects, and mixed
Kotlin-Java projects. It turns on automatically when a src/main/kotlin
folder is present in the project.
-->
<profile>
<id>kotlin</id>
<activation>
<file>
<!-- NB: No property, because profile activation is too early. -->
<exists>${basedir}/src/main/kotlin</exists>
</file>
</activation>
<properties>
<kotlin.compiler.incremental>true</kotlin.compiler.incremental>
<kotlin.compiler.jvmTarget>${scijava.jvm.version}</kotlin.compiler.jvmTarget>
<kotlin-maven-plugin.version>${kotlin.version}</kotlin-maven-plugin.version>
</properties>
<dependencies>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib-jdk8</artifactId>
<version>${kotlin.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>${project.basedir}/src/main/kotlin</source>
</sources>
</configuration>
</execution>
<execution>
<id>add-test-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>${project.basedir}/src/test/kotlin</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<version>${kotlin-maven-plugin.version}</version>
<executions>
<execution>
<id>kapt</id>
<goals>
<goal>kapt</goal>
</goals>
<configuration>
<sourceDirs>
<sourceDir>${project.basedir}/src/main/kotlin</sourceDir>
<sourceDir>${project.basedir}/src/main/java</sourceDir>
</sourceDirs>
</configuration>
</execution>
<execution>
<id>compile</id>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<sourceDirs>
<sourceDir>${project.basedir}/src/main/kotlin</sourceDir>
<sourceDir>${project.basedir}/src/main/java</sourceDir>
</sourceDirs>
</configuration>
</execution>
<execution>
<id>test-compile</id>
<goals>
<goal>test-compile</goal>
</goals>
<configuration>
<sourceDirs>
<sourceDir>${project.basedir}/src/test/kotlin</sourceDir>
<sourceDir>${project.basedir}/src/test/java</sourceDir>
</sourceDirs>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<executions>
<!-- Replace default-compile as it is treated specially. -->
<execution>
<id>default-compile</id>
<phase>none</phase>
</execution>
<!-- Replace default-testCompile as it is treated specially. -->
<execution>
<id>default-testCompile</id>
<phase>none</phase>
</execution>
<execution>
<id>java-compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
<execution>
<id>java-test-compile</id>
<phase>test-compile</phase>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.jetbrains.dokka</groupId>
<artifactId>dokka-maven-plugin</artifactId>
<version>${dokka-maven-plugin.version}</version>
<executions>
<execution>
<phase>pre-site</phase>
<goals>
<goal>dokka</goal>
<goal>javadoc</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<pluginRepositories>
<!-- NB: for dokka-maven-plugin -->
<pluginRepository>
<id>jcenter</id>
<name>JCenter</name>
<url>https://jcenter.bintray.com/</url>
</pluginRepository>
</pluginRepositories>
</profile>
<!--
The exec profile provides an easy way to execute a defined ${main-class}
for manual testing purposes. It is declared in a profile to avoid clashing
with other potential uses of exec-maven-plugin during the main build.
-->
<profile>
<id>exec</id>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<configuration>
<executable>java</executable>
<arguments>
<argument>-classpath</argument>
<classpath />
<argument>${main-class}</argument>
</arguments>
</configuration>
<executions>
<execution>
<phase>test</phase>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!--
The dist profile augments the package phase to produce self-contained
Java application bundles, using the standard Java packaging mechanism.
Exactly which bundles are produced depends on the underlying platform
configuration. But this configuration will always produce two sets of
bundles: one with JRE included (in target/jfx/native) and
another without a bundled JRE (in target/jfx/native-nojre).
-->
<profile>
<id>dist</id>
<build>
<plugins>
<plugin>
<groupId>com.zenjava</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<executions>
<execution>
<id>dist-with-jre</id>
<phase>package</phase>
<goals>
<goal>native</goal>
</goals>
</execution>
<execution>
<id>dist-no-jre</id>
<phase>package</phase>
<goals>
<goal>native</goal>
</goals>
<configuration>
<bundleArguments>
<runtime />
</bundleArguments>
<nativeOutputDir>${project.build.directory}/jfx/native-nojre</nativeOutputDir>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!--
The uberjar profile augments the package phase to build an unshaded uber-JAR
or "fat JAR" using the maven-shade-plugin. The default classifier is "all";
override the ${uberjar-classifier} property to change it.
Uber-JARs are convenient for all-in-one distribution of a Java program,
freeing users from the burden of juggling multiple files and dependencies.
However, unshaded uberjars are not appropriate for use as dependencies
themselves, because the uber-JAR's embedded version of each dependency may
clash with other classpath components relying on those same dependencies.
It is advised to publish the standard (non-uber) JAR of your component with
proper dependency declarations as the main artifact, and deploy the uber-JAR
as a separate classifier.
-->
<profile>
<id>uberjar</id>
<build>
<plugins>
<plugin>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<shadedClassifierName>${uberjar-classifier}</shadedClassifierName>
<createDependencyReducedPom>false</createDependencyReducedPom>
<shadedArtifactAttached>true</shadedArtifactAttached>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/json/org.scijava.plugin.Plugin</resource>
</transformer>
</transformers>
<filters>
<filter>
<!--
Shading signed JARs will fail without this.
http://stackoverflow.com/questions/999489/invalid-signature-file-when-attempting-to-run-a-jar
-->
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!--
The jdb profile launches the defined ${main-class} in the jdb debugger.
Launch it using: mvn -Pjdb exec:exec
-->
<profile>
<id>jdb</id>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<configuration>
<executable>jdb</executable>
<arguments>
<argument>-classpath</argument>
<classpath />
<argument>${main-class}</argument>
</arguments>
</configuration>
<executions>
<execution>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!--
For debugging. E.g. for Eclipse, pass -DdebugPort=8000,suspend=y
and add a Debug Configuration for a Remote Java Application.
-->
<profile>
<id>debug-port</id>
<activation>
<property><name>debugPort</name></property>
</activation>
<properties>
<scijava.surefire.args>-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=localhost:${debugPort}</scijava.surefire.args>
</properties>
</profile>
<!--
Run integration tests when "-Prun-its" is passed.
This works using the maven-invoker-plugin.
-->
<profile>
<id>run-its</id>
<build>
<defaultGoal>integration-test</defaultGoal>
<plugins>
<plugin>
<artifactId>maven-invoker-plugin</artifactId>
<version>${maven-invoker-plugin.version}</version>
<configuration>
<debug>${invoker.debug}</debug>
<showErrors>true</showErrors>
<streamLogs>true</streamLogs>
<projectsDirectory>src/it</projectsDirectory>
<cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>
<pomIncludes>
<pomInclude>*/pom.xml</pomInclude>
</pomIncludes>
<settingsFile>src/it/settings.xml</settingsFile>
<localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath>
<preBuildHookScript>setup.bsh</preBuildHookScript>
<postBuildHookScript>verify.bsh</postBuildHookScript>
</configuration>
<executions>
<execution>
<id>integration-test</id>
<goals>
<goal>install</goal>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- This profile enables deployment to the SciJava Maven repository. -->
<profile>
<id>deploy-to-scijava</id>
<build>
<plugins>
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<skip>${javadoc.skip}</skip>
</configuration>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<distributionManagement>
<repository>
<id>scijava.releases</id>
<name>SciJava Releases Repository</name>
<url>dav:https://maven.scijava.org/content/repositories/releases</url>
</repository>
<snapshotRepository>
<id>scijava.snapshots</id>
<name>SciJava Snapshots Repository</name>
<url>dav:https://maven.scijava.org/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
</profile>
<!-- This profile enables releasing to the OSS Sonatype repository. -->
<profile>
<id>sonatype-oss-release</id>
<build>
<plugins>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>${nexus-staging-maven-plugin.version}</version>
<extensions>true</extensions>
<configuration>
<serverId>sonatype-nexus-releases</serverId>
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>true</autoReleaseAfterClose>
<stagingProgressTimeoutMinutes>15</stagingProgressTimeoutMinutes>
<stagingProgressPauseDurationSeconds>12</stagingProgressPauseDurationSeconds>
<!--
By having no explicit stagingProfileId, we use
Staging V2 in "auto" mode, profile will be
matched server side
-->
</configuration>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<inherited>true</inherited>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<artifactId>maven-gpg-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>sonatype-nexus-snapshots</id>
<name>Sonatype Nexus Snapshots</name>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>sonatype-nexus-releases</id>
<name>Sonatype Nexus Releases</name>
<url>https://oss.sonatype.org/content/repositories/releases</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<distributionManagement>
<snapshotRepository>
<id>sonatype-nexus-snapshots</id>
<name>Sonatype Nexus Snapshots</name>
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
</snapshotRepository>
<repository>
<id>sonatype-nexus-staging</id>
<name>Nexus Release Repository</name>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>
</profile>
<!--
This profile lets Eclipse parse SciJava annotations of imported projects,
and maps Maven plugin goals to Eclipse executions.
-->
<profile>
<id>only-eclipse</id>
<activation>
<property>
<name>m2e.version</name>
</property>
</activation>
<build>
<pluginManagement>
<plugins>
<!--
Configure the Eclipse m2e plugin to support needed plugins.
-->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<!--
NB: Eclipse cannot handle an overridden version property here!
The version needs to stay hardcoded at 1.0.0.
-->
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<versionRange>${maven-enforcer-plugin.version}</versionRange>
<goals>
<goal>enforce</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute>
<runOnConfiguration>true</runOnConfiguration>
</execute>
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<versionRange>${build-helper-maven-plugin.version}</versionRange>
<goals>
<goal>regex-property</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute>
<runOnIncremental>true</runOnIncremental>
<runOnConfiguration>true</runOnConfiguration>
</execute>
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<versionRange>${build-helper-maven-plugin.version}</versionRange>
<goals>
<goal>add-source</goal>
<goal>add-test-source</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute>
<runOnIncremental>false</runOnIncremental>
<runOnConfiguration>true</runOnConfiguration>
</execute>
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<versionRange>${buildnumber-maven-plugin.version}</versionRange>
<goals>
<goal>create</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute>
<runOnIncremental>true</runOnIncremental>
<runOnConfiguration>true</runOnConfiguration>
</execute>
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<versionRange>${maven-antrun-plugin.version}</versionRange>
<goals>
<goal>run</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<versionRange>${exec-maven-plugin.version}</versionRange>
<goals>
<goal>java</goal>
<goal>exec</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
<!--
NB: Make Eclipse generate code in a full build; see:
https://www.eclipse.org/m2e/documentation/m2e-execution-not-covered.html
-->
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.codehaus.mojo</groupId>
<artifactId>groovy-maven-plugin</artifactId>
<versionRange>${groovy-maven-plugin.version}</versionRange>
<goals>
<goal>execute</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute>
<runOnConfiguration>true</runOnConfiguration>
<runOnIncremental>false</runOnIncremental>
</execute>
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>com.googlecode.maven-download-plugin</groupId>
<artifactId>download-maven-plugin</artifactId>
<versionRange>${download-maven-plugin.version}</versionRange>
<goals>
<goal>wget</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute>
<runOnConfiguration>true</runOnConfiguration>
</execute>
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<versionRange>${kotlin-maven-plugin.version}</versionRange>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute>
<runOnIncremental>true</runOnIncremental>
<runOnConfiguration>true</runOnConfiguration>
</execute>
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<versionRange>${kotlin-maven-plugin.version}</versionRange>
<goals>
<goal>kapt</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.scijava</groupId>
<artifactId>scijava-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>eclipse-helper</goal>
</goals>
<phase>process-classes</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
<properties>
<!--
HACK - Tell Eclipse to use the TEST source and target JVM version.
This is necessary because the JVM version used for tests may be newer
than that used for the main artifact. Maven is OK with this, but
Eclipse wants only a single JVM version for both main and tests.
See: https://gist.github.com/aslakknutsen/9648594#gistcomment-1588906
-->
<maven.compiler.source>${scijava.jvm.test.version}</maven.compiler.source>
<maven.compiler.target>${scijava.jvm.test.version}</maven.compiler.target>
</properties>
</profile>
<!--
This profile signs artifacts using GPG.
-->
<profile>
<id>sign</id>
<build>
<plugins>
<plugin>
<artifactId>maven-gpg-plugin</artifactId>
</plugin>
</plugins>
</build>
</profile>
<!--
This profile aggregates javadocs for the project
and its direct dependencies.
-->
<profile>
<id>build-javadoc</id>
<build>
<defaultGoal>package</defaultGoal>
<plugins>
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- Include direct dependencies -->
<includeDependencySources>true</includeDependencySources>
<!-- Remove the "${project.version} API" from the default title -->
<doctitle>${project.name}</doctitle>
<!-- Disable the strict Java 8 doclint. -->
<doclint>none</doclint>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<!--
The Findbugs profile executes a static code analysis for any bugs,
using Findbugs analysis tool. It produces a findbugs.xml report in target
folder. It may catch some undangerous bugs, so it is better to set the
failOnError variable to false.
-->
<profile>
<id>findbugs</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<findbugs.maven.version>3.0.5</findbugs.maven.version>
<findbugs.failOnError>false</findbugs.failOnError>
</properties>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>${findbugs.maven.version}</version>
<executions>
<execution>
<id>findbugs</id>
<phase>verify</phase>
<configuration>
<failOnError>${findbugs.failOnError}</failOnError>
<effort>Max</effort>
<threshold>Default</threshold>
<xmlOutput>true</xmlOutput>
</configuration>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>${findbugs.maven.version}</version>
<executions>
<execution>
<id>findbugs</id>
<phase>test</phase>
<configuration>
</configuration>
<goals>
<goal>findbugs</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!--
The following profiles set the scijava.platform system properties to
match the detected architecture. The main intended use case is for
platform-specific natives artifacts, so that they can be depended on using
<classifier>${scijava.natives.classifier}</classifier> in the dependency.
See https://github.com/flimlib/flimj-ops for an example.
-->
<profile>
<id>scijava-platform-windows</id>
<activation>
<os>
<family>windows</family>
</os>
</activation>
<properties>
<scijava.platform.family.short>win</scijava.platform.family.short>
<scijava.platform.family.medium>windows</scijava.platform.family.medium>
<scijava.platform.family.long>windows</scijava.platform.family.long>
<scijava.platform.family.longest>windows</scijava.platform.family.longest>
</properties>
</profile>
<profile>
<id>scijava-platform-macos</id>
<activation>
<os>
<family>mac</family>
</os>
</activation>
<properties>
<scijava.platform.family.short>mac</scijava.platform.family.short>
<scijava.platform.family.medium>osx</scijava.platform.family.medium>
<scijava.platform.family.long>macos</scijava.platform.family.long>
<scijava.platform.family.longest>macosx</scijava.platform.family.longest>
</properties>
</profile>
<profile>
<id>scijava-platform-linux</id>
<activation>
<os>
<family>unix</family>
<name>Linux</name>
</os>
</activation>
<properties>
<scijava.platform.family.short>linux</scijava.platform.family.short>
<scijava.platform.family.medium>linux</scijava.platform.family.medium>
<scijava.platform.family.long>linux</scijava.platform.family.long>
<scijava.platform.family.longest>linux</scijava.platform.family.longest>
</properties>
</profile>
<profile>
<id>scijava-platform-amd64</id>
<activation>
<os>
<arch>amd64</arch>
</os>
</activation>
<properties>
<scijava.platform.bits>64</scijava.platform.bits>
</properties>
</profile>
<profile>
<id>scijava-platform-x86_64</id>
<activation>
<os>
<arch>x86_64</arch>
</os>
</activation>
<properties>
<scijava.platform.bits>64</scijava.platform.bits>
</properties>
</profile>
<profile>
<id>scijava-platform-x86</id>
<activation>
<os>
<arch>x86</arch>
</os>
</activation>
<properties>
<scijava.platform.bits>32</scijava.platform.bits>
</properties>
</profile>
</profiles>
</project>