gatk-3.8/pom.xml

757 lines
38 KiB
XML
Raw Normal View History

<?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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--
This pom is the aggregator for all gatk poms
See also:
http://maven.apache.org/pom.html#Inheritance_v
http://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Project_Inheritance_vs_Project_Aggregation
http://stackoverflow.com/questions/1992213/maven-parent-pom-vs-modules-pom
-->
<parent>
<groupId>org.broadinstitute.gatk</groupId>
<artifactId>gatk-root</artifactId>
<version>3.3-SNAPSHOT</version>
<relativePath>public/gatk-root</relativePath>
</parent>
<artifactId>gatk-aggregator</artifactId>
<packaging>pom</packaging>
<name>GATK Aggregator</name>
<modules>
<module>public</module>
<!-- private & protected optionally enabled as profiles -->
</modules>
<properties>
<gatk.basedir>${project.basedir}</gatk.basedir>
<resource.bundle.path>GATKText.properties</resource.bundle.path>
<resource.bundle.skip>false</resource.bundle.skip>
<!-- TODO: Need a better a way to say "don't include hidden" by default -->
<gatkdocs.include.hidden>-build-timestamp "${maven.build.timestamp}"</gatkdocs.include.hidden>
<!--
Phases of the build that may be disabled to speed up compilation.
-->
<gatk.jar.phase>package</gatk.jar.phase>
<gatk.generate-resources.phase>generate-resources</gatk.generate-resources.phase>
<gatk.process-resources.phase>process-resources</gatk.process-resources.phase>
<gatk.process-test-resources.phase>process-test-resources</gatk.process-test-resources.phase>
<!--
Package tests ensure the consistency of the packaged / shaded jars.
It runs the tests where the monolithic jar is the only dependency on the classpath.
-->
<gatk.packagecommittests.skipped>true</gatk.packagecommittests.skipped>
<gatk.packageunittests.skipped>${gatk.packagecommittests.skipped}</gatk.packageunittests.skipped>
<gatk.packageintegrationtests.skipped>${gatk.packagecommittests.skipped}</gatk.packageintegrationtests.skipped>
<gatk.packagequeuetests.skipped>${gatk.packagecommittests.skipped}</gatk.packagequeuetests.skipped>
<gatk.packagelargescaletests.skipped>true</gatk.packagelargescaletests.skipped>
<gatk.packageknowledgebasetests.skipped>true</gatk.packageknowledgebasetests.skipped>
<!--
Serial tests use the test jars to run tests, such that all tests are run from a single TestNG invocation.
This is different that the invoker, that runs the test classes from the filesystem, but pointing at the packaged JAR files.
TODO: Currently, all tests run within each package, since packages already collect dependencies for shading an uber jar.
TODO: Should there be another level up of tests, possibly running "all tests" via this aggregator level?
TODO: If that require the aggregator to be dependent on the child dependencies, perhaps a better approach might be another monolithic test project.
-->
<gatk.serialcommittests.skipped>true</gatk.serialcommittests.skipped>
<gatk.serialunittests.skipped>${gatk.serialcommittests.skipped}</gatk.serialunittests.skipped>
<gatk.serialintegrationtests.skipped>${gatk.serialcommittests.skipped}</gatk.serialintegrationtests.skipped>
<gatk.serialqueuetests.skipped>${gatk.serialcommittests.skipped}</gatk.serialqueuetests.skipped>
<gatk.seriallargescaletests.skipped>true</gatk.seriallargescaletests.skipped>
<gatk.serialknowledgebasetests.skipped>true</gatk.serialknowledgebasetests.skipped>
</properties>
<dependencies>
<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
</dependency>
</dependencies>
<build>
<!-- Plugin configuration -->
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<configuration>
<filesets>
<!--
TODO: Once GATKDoclet stops hard coding paths, we remove this and leave
TODO: it to the standard maven conventions to clean up for us
-->
<fileset>
<directory>gatkdocs</directory>
</fileset>
<fileset>
<directory>${basedir}</directory>
<includes>
<include>javadoc.sh</include>
<include>options</include>
<include>packages</include>
</includes>
</fileset>
<!--
Shade dumps this temp file in basedir, with no good way to reconfigure.
https://jira.codehaus.org/browse/MSHADE-145
-->
<fileset>
<directory>${basedir}</directory>
<includes>
<include>dependency-reduced-pom.xml</include>
</includes>
</fileset>
</filesets>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack-direct-dependencies</id>
<goals>
<goal>unpack-dependencies</goal>
</goals>
<phase>none</phase>
<!--
NOTE: Shade include filters do NOT include transient dependencies, only the class directly listed.
Thus to fully include all the classes in packages, we must:
1) List the artifacts we want shaded as direct dependencies
2) Run the unpack direct dependencies into the classes directory
3) Shade the classes directory as we normally would.
-->
<configuration>
<excludeTransitive>true</excludeTransitive>
<outputDirectory>${project.build.outputDirectory}</outputDirectory>
<includeTypes>jar</includeTypes>
<includeScope>runtime</includeScope>
<!-- Don't unjar the resource bundle, so that shade's AppendingTransformer can merge -->
<excludes>${resource.bundle.path}</excludes>
</configuration>
</execution>
</executions>
</plugin>
<!-- TODO: Change the ResourceBundleExtractorDoclet to not require log4j.properties file -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>default-resources</id>
<goals>
<goal>resources</goal>
</goals>
<phase>${gatk.process-resources.phase}</phase>
</execution>
<execution>
<id>default-testResources</id>
<goals>
<goal>testResources</goal>
</goals>
<phase>${gatk.process-test-resources.phase}</phase>
</execution>
<execution>
<id>copy-resource-bundle-log4j</id>
<goals>
<goal>copy-resources</goal>
</goals>
<phase>none</phase>
<configuration>
<!--
Just before running the resource bundle generation, copy a simple log4j
config file to the apidocs execution directory, so that logging prints out.
-->
<outputDirectory>${project.reporting.outputDirectory}/apidocs</outputDirectory>
<resources>
<resource>
<directory>${gatk.basedir}/gatk-utils/src/main/config/org/broadinstitute/gatk/utils/help</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<executions>
<execution>
<id>extract-resource-bundle</id>
<goals>
<goal>javadoc</goal>
</goals>
<phase>none</phase>
<configuration>
<!-- Allow skipping for "fasttest" -->
<skip>${resource.bundle.skip}</skip>
<doclet>org.broadinstitute.gatk.utils.help.ResourceBundleExtractorDoclet</doclet>
<!-- Required as doclet uses reflection to access classes for documentation, instead of source java-->
<docletPath>${project.build.outputDirectory}</docletPath>
<docletArtifact>
<groupId>${project.groupId}</groupId>
<!-- TODO: THIS IS SUPPOSED TO BE GATK-UTILS! -->
<artifactId>gatk-tools-public</artifactId>
<version>${project.version}</version>
</docletArtifact>
<maxmemory>2g</maxmemory>
<useStandardDocletOptions>false</useStandardDocletOptions>
<quiet>true</quiet>
<additionalparam>-build-timestamp "${maven.build.timestamp}" -absolute-version ${build.version} -out "${project.build.outputDirectory}/${resource.bundle.path}"</additionalparam>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<proc>none</proc>
<annotationProcessors>
<annotationProcessor>com.google.java.contract.core.apt.AnnotationProcessor</annotationProcessor>
</annotationProcessors>
</configuration>
<executions>
<execution>
<id>default-compile</id>
<phase>none</phase>
</execution>
<execution>
<id>default-testCompile</id>
<phase>none</phase>
</execution>
<!--
Explicit package-info creation to match existing ant output.
-->
<execution>
<id>compile-package-info</id>
<goals>
<goal>compile</goal>
</goals>
<phase>compile</phase>
<configuration>
<compilerArgs>
<arg>-Xpkginfo:always</arg>
</compilerArgs>
<includes>
<include>**/package-info.java</include>
</includes>
</configuration>
</execution>
<!--
TODO: Currently disabled in build.xml. Here as well.
<execution>
<id>compile-annotations</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<proc>only</proc>
</configuration>
</execution>
-->
<execution>
<id>compile-java</id>
<goals>
<goal>compile</goal>
</goals>
<phase>compile</phase>
<configuration>
<!--
Package info is supposed to be in source:
http://maven.apache.org/plugins/maven-javadoc-plugin/examples/javadoc-resources.html
But maven-compile-plugin doesn't auto exclude these:
https://jira.codehaus.org/browse/MCOMPILER-205?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=326505#comment-326505
So, explicitly exclude them
-->
<excludes>
<exclude>**/package-info.java</exclude>
</excludes>
</configuration>
</execution>
<!--
TODO: Currently disabled in build.xml. Here as well.
<execution>
<id>testCompile-annotations</id>
<phase>test-compile</phase>
<goals>
<goal>testCompile</goal>
</goals>
<configuration>
<proc>only</proc>
</configuration>
</execution>
-->
<execution>
<id>testCompile-java</id>
<goals>
<goal>testCompile</goal>
</goals>
<phase>test-compile</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.scala-tools</groupId>
<artifactId>maven-scala-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>default-jar</id>
<phase>${gatk.jar.phase}</phase>
</execution>
<execution>
<id>test-jar</id>
<goals>
<goal>test-jar</goal>
</goals>
<phase>${gatk.jar.phase}</phase>
<configuration>
<skipIfEmpty>true</skipIfEmpty>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<id>gatk-executable</id>
<goals>
<goal>shade</goal>
</goals>
<phase>none</phase>
<configuration>
<minimizeJar>true</minimizeJar>
<artifactSet>
<excludes>
<exclude>org.broadinstitute.gatk:gsalib:tar.gz:*</exclude>
<exclude>org.broadinstitute.gatk:*:tar.bz2:example-resources</exclude>
</excludes>
</artifactSet>
<filters>
<!--
NOTE: Removing cofoja's annotation service to allow "javac -cp GenomeAnalysisTK.jar ..." without
needing an additional -proc:none argument. Using *:* to catch shaded GATK in Queue package.
-->
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/services/javax.annotation.processing.Processor</exclude>
</excludes>
</filter>
</filters>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<manifestEntries>
<Main-Class>${app.main.class}</Main-Class>
</manifestEntries>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>${resource.bundle.path}</resource>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>example-resources</id>
<goals>
<goal>single</goal>
</goals>
<phase>none</phase>
<configuration>
<descriptors>
<descriptor>src/main/assembly/example-resources.xml</descriptor>
</descriptors>
</configuration>
</execution>
<execution>
<id>binary-dist</id>
<goals>
<goal>single</goal>
</goals>
<phase>none</phase>
<configuration>
<descriptors>
<descriptor>src/main/assembly/binary-dist.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.pyx4j</groupId>
<artifactId>maven-junction-plugin</artifactId>
<executions>
<!--
HACK: Adding the source directory via build-helper-maven-plugin doesn't work with IntelliJ.
Add compatibility link from public's extensions source code to target/generated-sources.
see: http://wiki.jetbrains.net/intellij/Maven_FAQ
-->
<execution>
<id>link-extensions-sources</id>
<goals>
<goal>link</goal>
</goals>
<phase>none</phase>
<configuration>
<links>
<link>
<dst>${project.build.directory}/generated-sources/gatk-queue-extensions-public-src-main-scala</dst>
<src>${gatk.basedir}/public/gatk-queue-extensions-public/src/main/scala</src>
</link>
</links>
</configuration>
</execution>
<execution>
<id>link-binary-jar</id>
<goals>
<goal>link</goal>
</goals>
<phase>none</phase>
<configuration>
<links>
<link>
<dst>${gatk.basedir}/target/${gatk.binary-dist.name}.${project.packaging}</dst>
<src>${project.build.directory}/${project.build.finalName}.${project.packaging}</src>
</link>
</links>
</configuration>
</execution>
<execution>
<id>link-git-release</id>
<goals>
<goal>link</goal>
</goals>
<phase>none</phase>
<configuration>
<links>
<link>
<dst>${project.build.directory}/${gatk.binary-dist.name}-${build.version}.tar.bz2</dst>
<src>${project.build.directory}/${project.build.finalName}-binary-dist.tar.bz2</src>
</link>
</links>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-invoker-plugin</artifactId>
<configuration>
<skipInvocation>true</skipInvocation>
<debug>false</debug>
<pom>${gatk.basedir}/public/package-tests/pom.xml</pom>
<noLog>true</noLog>
<streamLogs>true</streamLogs>
<localRepositoryPath>${gatk.basedir}/${maven.repo.local}</localRepositoryPath>
<properties>
<test>${test}</test>
<it.test>${it.test}</it.test>
<skip>false</skip>
<maven.test.skip>false</maven.test.skip>
<gatk.packagetests.artifactId>${gatk.packagetests.artifactId}</gatk.packagetests.artifactId>
<gatk.packagetests.testClasses>${project.build.testOutputDirectory}</gatk.packagetests.testClasses>
<gatk.packagetests.basedir>${project.basedir}</gatk.packagetests.basedir>
<gatk.queuetests.run>${gatk.queuetests.run}</gatk.queuetests.run>
<maven.surefire.debug>${maven.surefire.debug}</maven.surefire.debug>
<maven.failsafe.debug>${maven.failsafe.debug}</maven.failsafe.debug>
</properties>
<!--
To allow using separated integration-test and verify, each execution must use a separate reportsDirectory.
Otherwise, when an empty "pipeline test" later runs on an IntegrationTest class,
it overwrites the results of the previous invocation always with a zero exit status.
Mixing in the test name into the reportsDirectory also avoids collisions, when different maven jobs run tests in parallel.
Similarly generating unique failsafe summary reports to avoid collisions.
-->
</configuration>
<executions>
<execution>
<id>package-unittests</id>
<goals>
<goal>run</goal>
</goals>
<configuration>
<goals>
<goal>test</goal>
</goals>
<reportsDirectory>${project.build.directory}/invoker-reports/unit/${test}</reportsDirectory>
<skipInvocation>${gatk.packageunittests.skipped}</skipInvocation>
<properties>
<unittests.profile.enabled>true</unittests.profile.enabled>
<gatk.packageunittests.skipped>${gatk.packageunittests.skipped}</gatk.packageunittests.skipped>
</properties>
</configuration>
</execution>
<execution>
<id>package-integrationtests</id>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
<configuration>
<goals>
<goal>verify</goal>
</goals>
<reportsDirectory>${project.build.directory}/invoker-reports/integration/${it.test}</reportsDirectory>
<skipInvocation>${gatk.packageintegrationtests.skipped}</skipInvocation>
<properties>
<integrationtests.profile.enabled>true</integrationtests.profile.enabled>
<gatk.packageintegrationtests.skipped>${gatk.packageintegrationtests.skipped}</gatk.packageintegrationtests.skipped>
</properties>
</configuration>
</execution>
<execution>
<id>package-queuetests</id>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
<configuration>
<goals>
<goal>verify</goal>
</goals>
<reportsDirectory>${project.build.directory}/invoker-reports/queuetest/${it.test}</reportsDirectory>
<skipInvocation>${gatk.packagequeuetests.skipped}</skipInvocation>
<properties>
<integrationtests.profile.enabled>true</integrationtests.profile.enabled>
<gatk.packagequeuetests.skipped>${gatk.packagequeuetests.skipped}</gatk.packagequeuetests.skipped>
</properties>
</configuration>
</execution>
<execution>
<id>package-largescaletests</id>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
<configuration>
<goals>
<goal>verify</goal>
</goals>
<reportsDirectory>${project.build.directory}/invoker-reports/largescale/${it.test}</reportsDirectory>
<skipInvocation>${gatk.packagelargescaletests.skipped}</skipInvocation>
<properties>
<integrationtests.profile.enabled>true</integrationtests.profile.enabled>
<gatk.packagelargescaletests.skipped>${gatk.packagelargescaletests.skipped}</gatk.packagelargescaletests.skipped>
</properties>
</configuration>
</execution>
<execution>
<id>package-knowledgebasetests</id>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
<configuration>
<goals>
<goal>verify</goal>
</goals>
<reportsDirectory>${project.build.directory}/invoker-reports/knowledgebase/${it.test}</reportsDirectory>
<skipInvocation>${gatk.packageknowledgebasetests.skipped}</skipInvocation>
<properties>
<integrationtests.profile.enabled>true</integrationtests.profile.enabled>
<gatk.packageknowledgebasetests.skipped>${gatk.packageknowledgebasetests.skipped}</gatk.packageknowledgebasetests.skipped>
</properties>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>2.5</version>
<executions>
<execution>
<id>install-package</id>
<goals>
<goal>install-file</goal>
</goals>
<phase>none</phase>
<configuration>
<generatePom>true</generatePom>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
<packaging>${project.packaging}</packaging>
<file>${project.build.directory}/${project.build.finalName}.${project.packaging}</file>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
<!-- Invoke plugins that always run -->
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<executions>
<execution>
<!--
TODO: Remove after 3.3+ release.
Until then, will clean out symbolic links from users who download public/protected.
Perhaps leave the script even longer.
-->
<id>delete-mavens-links</id>
<goals>
<goal>exec</goal>
</goals>
<phase>process-test-resources</phase>
<inherited>false</inherited>
<configuration>
<executable>${gatk.basedir}/public/src/main/scripts/shell/delete_maven_links.sh</executable>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.google.code.sortpom</groupId>
<artifactId>maven-sortpom-plugin</artifactId>
<executions>
<execution>
<id>package-tests</id>
<goals>
<goal>sort</goal>
</goals>
<phase>verify</phase>
<inherited>false</inherited>
<configuration>
<pomFile>public/package-tests/pom.xml</pomFile>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
<reportSets>
<!-- By not specifying an id, shut off all default javadocs from mvn site -->
<reportSet>
<reports />
</reportSet>
<reportSet>
<id>generate-gatk-docs</id>
<reports>
<report>aggregate</report>
</reports>
<!-- Only generate the GATK Docs across the parent aggregation, not the children too. -->
<inherited>false</inherited>
<configuration>
<doclet>org.broadinstitute.gatk.utils.help.GATKDoclet</doclet>
<docletArtifact>
<groupId>${project.groupId}</groupId>
<artifactId>gatk-package-distribution</artifactId>
<version>${project.version}</version>
</docletArtifact>
<useStandardDocletOptions>false</useStandardDocletOptions>
<quiet>true</quiet>
<show>private</show>
<additionalparam>-build-timestamp "${maven.build.timestamp}" -absolute-version ${build.version} ${gatkdocs.include.hidden} -settings-dir ${gatk.basedir}/settings/helpTemplates -destination-dir ${project.build.directory}/gatkdocs</additionalparam>
</configuration>
</reportSet>
</reportSets>
</plugin>
</plugins>
</reporting>
<profiles>
<!-- Optionally include protected -->
<profile>
<id>protected</id>
<activation>
<file>
<exists>${basedir}/protected/pom.xml</exists>
</file>
</activation>
<modules>
<module>protected</module>
</modules>
</profile>
<!-- Optionally include private -->
<profile>
<id>private</id>
<activation>
<file>
<exists>${basedir}/private/pom.xml</exists>
</file>
</activation>
<modules>
<module>private</module>
</modules>
</profile>
<!-- Collection of properties for use during package testing -->
<profile>
<id>packagetests-enabled</id>
<activation>
<property>
<name>gatk.packagetests.enabled</name>
<value>true</value>
</property>
</activation>
<properties>
<maven.javadoc.skip>true</maven.javadoc.skip>
<gatk.generate-gatk-extensions.skipped>true</gatk.generate-gatk-extensions.skipped>
<gatk.jar.phase>none</gatk.jar.phase>
<gatk.generate-resources.phase>none</gatk.generate-resources.phase>
<gatk.process-resources.phase>none</gatk.process-resources.phase>
<gatk.process-test-resources.phase>none</gatk.process-test-resources.phase>
</properties>
</profile>
</profiles>
</project>