gatk-3.8/pom.xml

779 lines
39 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 sting/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.sting</groupId>
<artifactId>sting-root</artifactId>
<version>2.8-SNAPSHOT</version>
<relativePath>public/sting-root</relativePath>
</parent>
<artifactId>sting-aggregator</artifactId>
<packaging>pom</packaging>
<name>Sting Aggregator</name>
<modules>
<module>public</module>
<!-- private & protected optionally enabled as profiles -->
</modules>
<properties>
<sting.basedir>${project.basedir}</sting.basedir>
<resource.bundle.path>StingText.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>
<sting.jar.phase>package</sting.jar.phase>
<sting.test-utils.jar.phase>none</sting.test-utils.jar.phase>
<sting.packagecommittests.skipped>true</sting.packagecommittests.skipped>
<sting.packageunittests.skipped>${sting.packagecommittests.skipped}</sting.packageunittests.skipped>
<sting.packageintegrationtests.skipped>${sting.packagecommittests.skipped}</sting.packageintegrationtests.skipped>
<sting.packagepipelinetests.skipped>${sting.packagecommittests.skipped}</sting.packagepipelinetests.skipped>
<sting.packagelargescaletests.skipped>true</sting.packagelargescaletests.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>
<configuration>
<excludeTransitive>true</excludeTransitive>
<outputDirectory>${project.build.outputDirectory}</outputDirectory>
<includeTypes>jar</includeTypes>
<excludeScope>system</excludeScope>
</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>copy-resource-bundle-log4j</id>
<goals>
<goal>copy-resources</goal>
</goals>
<phase>none</phase>
<configuration>
<outputDirectory>${project.reporting.outputDirectory}/apidocs</outputDirectory>
<resources>
<resource>
<directory>${sting.basedir}/sting-utils/src/main/config/org/broadinstitute/sting/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.sting.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 STING-UTILS! -->
<artifactId>gatk-framework</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>
<compilerArguments>
<!--
For com.sun.istack.internal. Because bootclasspath is set to include rt.jar, now jce.jar must be set for the Oracle only javax.crypto also.
TODO: This Sun internal tool usage needs to be removed ASAP!
-->
<bootclasspath>${java.home}/lib/rt.jar:${java.home}/lib/jce.jar</bootclasspath>
</compilerArguments>
</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>${sting.jar.phase}</phase>
</execution>
<execution>
<id>test-utils</id>
<goals>
<goal>jar</goal>
</goals>
<phase>${sting.test-utils-jar.phase}</phase>
<configuration>
<classesDirectory>${project.build.testOutputDirectory}</classesDirectory>
<classifier>test-utils</classifier>
<!--
TODO: Excluding actual tests from tests-utils jar is required because the same test classes
TODO: cannot be in both the test artifact AND the test classes directory.
TODO: Otherwise maven throws an [ERROR] java.lang.RuntimeException: Duplicate test set
TODO: This is due to AbstractSurefireMojo.scanForTestClasses() adding both scanDirectories() and scanDependencies().
TODO: Pain to debug as exception is three maven invoker levels deep, outer maven, maven-inovker-plugin, then forked tests!
TODO: See also: http://maven.apache.org/plugins/maven-jar-plugin/usage.html#The_preferred_way
TODO: Then that dependency won't have test classes that will also run from the
TODO: test classes directory during the invoked package test.
-->
<excludes>
<exclude>**/*UnitTest.class</exclude>
<exclude>**/*UnitTest$*.class</exclude>
<exclude>**/*IntegrationTest.class</exclude>
<exclude>**/*IntegrationTest$*.class</exclude>
<exclude>**/*PipelineTest.class</exclude>
<exclude>**/*PipelineTest$*.class</exclude>
<exclude>**/*LargeScaleTest.class</exclude>
<exclude>**/*LargeScaleTest.class</exclude>
</excludes>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<id>sting-executable</id>
<goals>
<goal>shade</goal>
</goals>
<phase>none</phase>
<configuration>
<minimizeJar>true</minimizeJar>
<artifactSet>
<excludes>
<exclude>org.broadinstitute.sting:gsalib:tar.gz:*</exclude>
<exclude>org.broadinstitute.sting:*:tar.bz2:example-resources</exclude>
</excludes>
</artifactSet>
<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>
<!-- TODO: Remove temporary symbolic link creation, after fixing test paths to use local resources. -->
<plugin>
<groupId>com.pyx4j</groupId>
<artifactId>maven-junction-plugin</artifactId>
<executions>
<execution>
<id>link-public-testdata</id>
<goals>
<goal>link</goal>
</goals>
<phase>none</phase>
<configuration>
<links>
<link>
<dst>${basedir}/public/testdata</dst>
<src>${sting.basedir}/public/gatk-framework/src/test/resources</src>
</link>
</links>
</configuration>
</execution>
<execution>
<id>unlink-public-testdata</id>
<goals>
<goal>unlink</goal>
</goals>
<phase>none</phase>
<configuration>
<links>
<link>
<dst>${basedir}/public/testdata</dst>
<src>${sting.basedir}/public/gatk-framework/src/test/resources</src>
</link>
</links>
</configuration>
</execution>
<execution>
<id>link-private-testdata</id>
<goals>
<goal>link</goal>
</goals>
<phase>none</phase>
<configuration>
<links>
<link>
<dst>${basedir}/private/testdata</dst>
<src>${sting.basedir}/private/gatk-private/src/test/resources</src>
</link>
</links>
</configuration>
</execution>
<execution>
<id>unlink-private-testdata</id>
<goals>
<goal>unlink</goal>
</goals>
<phase>none</phase>
<configuration>
<links>
<link>
<dst>${basedir}/private/testdata</dst>
<src>${sting.basedir}/private/gatk-private/src/test/resources</src>
</link>
</links>
</configuration>
</execution>
<execution>
<id>link-public-qscript</id>
<goals>
<goal>link</goal>
</goals>
<phase>none</phase>
<configuration>
<links>
<link>
<dst>${basedir}/public/scala/qscript</dst>
<src>${sting.basedir}/public/queue-framework/src/main/qscripts</src>
</link>
</links>
</configuration>
</execution>
<execution>
<id>unlink-public-qscript</id>
<goals>
<goal>unlink</goal>
</goals>
<phase>none</phase>
<configuration>
<links>
<link>
<dst>${basedir}/public/scala/qscript</dst>
<src>${sting.basedir}/public/queue-framework/src/main/qscripts</src>
</link>
</links>
</configuration>
</execution>
<execution>
<id>link-private-qscript</id>
<goals>
<goal>link</goal>
</goals>
<phase>none</phase>
<configuration>
<links>
<link>
<dst>${basedir}/private/scala/qscript</dst>
<src>${sting.basedir}/private/queue-private/src/main/qscripts</src>
</link>
</links>
</configuration>
</execution>
<execution>
<id>unlink-private-qscript</id>
<goals>
<goal>unlink</goal>
</goals>
<phase>none</phase>
<configuration>
<links>
<link>
<dst>${basedir}/private/scala/qscript</dst>
<src>${sting.basedir}/private/queue-private/src/main/qscripts</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}/${sting.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>${sting.basedir}/public/package-tests/pom.xml</pom>
<noLog>true</noLog>
<streamLogs>true</streamLogs>
<localRepositoryPath>${sting.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>
<sting.packagetests.artifactId>${sting.packagetests.artifactId}</sting.packagetests.artifactId>
<sting.packagetests.testClasses>${project.build.testOutputDirectory}</sting.packagetests.testClasses>
<sting.packagetests.basedir>${project.basedir}</sting.packagetests.basedir>
<sting.pipelinetests.run>${sting.pipelinetests.run}</sting.pipelinetests.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>${sting.packageunittests.skipped}</skipInvocation>
<properties>
<unittests.profile.enabled>true</unittests.profile.enabled>
<sting.packageunittests.skipped>${sting.packageunittests.skipped}</sting.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>${sting.packageintegrationtests.skipped}</skipInvocation>
<properties>
<integrationtests.profile.enabled>true</integrationtests.profile.enabled>
<sting.packageintegrationtests.skipped>${sting.packageintegrationtests.skipped}</sting.packageintegrationtests.skipped>
<failsafe.summaryFile>${project.build.directory}/failsafe-reports/integration/failsafe-summary-${it.test}.xml</failsafe.summaryFile>
</properties>
</configuration>
</execution>
<execution>
<id>package-pipelinetests</id>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
<configuration>
<goals>
<goal>verify</goal>
</goals>
<reportsDirectory>${project.build.directory}/invoker-reports/pipeline/${it.test}</reportsDirectory>
<skipInvocation>${sting.packagepipelinetests.skipped}</skipInvocation>
<properties>
<integrationtests.profile.enabled>true</integrationtests.profile.enabled>
<sting.packagepipelinetests.skipped>${sting.packagepipelinetests.skipped}</sting.packagepipelinetests.skipped>
<failsafe.summaryFile>${project.build.directory}/failsafe-reports/pipeline/failsafe-summary-${it.test}.xml</failsafe.summaryFile>
</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>${sting.packagelargescaletests.skipped}</skipInvocation>
<properties>
<integrationtests.profile.enabled>true</integrationtests.profile.enabled>
<sting.packagelargescaletests.skipped>${sting.packagelargescaletests.skipped}</sting.packagelargescaletests.skipped>
<failsafe.summaryFile>${project.build.directory}/failsafe-reports/largescale/failsafe-summary-${it.test}.xml</failsafe.summaryFile>
</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.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.pyx4j</groupId>
<artifactId>maven-junction-plugin</artifactId>
<executions>
<execution>
<id>link-public-testdata</id>
<phase>process-test-resources</phase>
</execution>
<execution>
<id>unlink-public-testdata</id>
<phase>clean</phase>
</execution>
</executions>
</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.sting.utils.help.GATKDoclet</doclet>
<docletArtifact>
<groupId>${project.groupId}</groupId>
<artifactId>gatk-package</artifactId>
<version>${project.version}</version>
</docletArtifact>
<useStandardDocletOptions>false</useStandardDocletOptions>
<quiet>true</quiet>
<show>private</show>
<!--
TODO: Stop GATKDoclet from hardcoding paths and start using parameters.
For now... just run from the base directory, target/site/../..
-->
<destDir>../..</destDir>
<additionalparam>-build-timestamp "${maven.build.timestamp}" -absolute-version ${build.version} ${gatkdocs.include.hidden}</additionalparam>
<!--
TODO: Leaving this true applies a patch to the git commited file
TODO: private/resources/clover/api/index.html
TODO: Determine if this file was generated and shoudldn't be touched,
TODO: or patch the file and commit a new version.
-->
<applyJavadocSecurityFix>false</applyJavadocSecurityFix>
</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>
</profiles>
</project>