Merge pull request #483 from broadinstitute/ks_new_maven_build_system

New maven build system
This commit is contained in:
droazen 2014-02-03 10:53:18 -08:00
commit 4eaa724be6
1536 changed files with 3533 additions and 2139 deletions

171
ant-bridge.sh 100755
View File

@ -0,0 +1,171 @@
#!/bin/sh
mvn_args="verify"
mvn_properties=
mvn_clean=
unknown_args=
property_regex='-D(.*)=(.*)'
unit_test_regex='.*UnitTest'
post_script=
run_type="run"
for arg in "${@}" ; do
if [[ "${arg}" == "dry" ]] ; then
run_type="dry"
elif [[ "${arg}" == "clean" ]] ; then
mvn_clean="clean"
mvn_args=
elif [[ "${arg}" =~ ${property_regex} ]] ; then
property_name=${BASH_REMATCH[1]}
property_value=${BASH_REMATCH[2]}
if [[ "${property_name}" == "single" ]] ; then
test_property="test"
test_disabled="it.test"
if [[ ! "${property_value}" =~ ${unit_test_regex} ]] ; then
test_property="it.test"
test_disabled="test"
fi
mvn_properties="${mvn_properties} -D${test_disabled}=disabled -D${test_property}=${property_value}"
elif [[ "${property_name}" == "test.debug.port" ]] ; then
mvn_properties="${mvn_properties} -Dmaven.surefire.debug=\"-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=${property_value}\""
elif [[ "${property_name}" == "test.default.maxmemory" ]] ; then
mvn_properties="${mvn_properties} -Dtest.maxmemory=${property_value}"
else
unknown_args="${unknown_args} \"${arg}\""
fi
else
if [[ "${arg}" != "dist" && "${mvn_args}" != "" && "${mvn_args}" != "verify" ]] ; then
echo "Sorry, this script does not currently support mixing targets." >&2
exit 1
elif [[ "${arg}" == "dist" ]] ; then
mvn_args="verify"
elif [[ "${arg}" == "gatk" ]] ; then
mvn_args="verify '-P!queue'"
elif [[ "${arg}" == "test.compile" ]] ; then
mvn_args="test-compile"
elif [[ "${arg}" == "gatkdocs" ]] ; then
local_repo="sitetemprepo"
mvn_args="install -Dmaven.repo.local=${local_repo} -Ddisable.queue && mvn site -Dmaven.repo.local=${local_repo} -Ddisable.queue"
elif [[ "${arg}" == "package.gatk.full" ]] ; then
mvn_args="package '-P!private,!queue'"
elif [[ "${arg}" == "package.gatk.all" ]] ; then
mvn_args="package '-P!queue'"
elif [[ "${arg}" == "package.queue.full" ]] ; then
mvn_args="package '-P!private'"
elif [[ "${arg}" == "package.queue.all" ]] ; then
mvn_args="package"
# elif [[ "${arg}" == "release.gatk.full" ]] ; then
# mvn_args="package '-P!private,!queue'"
# post_script=" && private/src/main/scripts/shell/copy_release.sh public/gatk-package/target/GenomeAnalysisTK-*.tar.bz2"
# elif [[ "${arg}" == "release.queue.full" ]] ; then
# mvn_args="package '-P!private'"
# post_script=" && private/src/main/scripts/shell/copy_release.sh public/queue-package/target/Queue-*.tar.bz2"
elif [[ "${arg}" == "build-picard-private" ]] ; then
mvn_args="mvn install -f private/picard-maven/pom.xml"
# TODO: clover support
# see ant and maven docs for clover:
# https://confluence.atlassian.com/display/CLOVER/1.+QuickStart+Guide
# https://confluence.atlassian.com/display/CLOVER/Clover-for-Maven+2+and+3+User%27s+Guide
#
#elif [[ "${arg}" == "clover.report" ]] ; then
# mvn_args=...
#
#elif [[ "${arg}" == "with.clover" ]] ; then
# mvn_args=...
# TODO: This runs *all* commit tests, including the few on Queue.
elif [[ "${arg}" == "gatkfull.binary.release.tests" ]] ; then
local_repo="sitetemprepo"
mvn_args="install -Dmaven.repo.local=${local_repo} && mvn verify"
mvn_args="${mvn_args} -Dmaven.repo.local=${local_repo} -Dmaven.javadoc.skip=true"
mvn_args="${mvn_args} -Dsting.generate-gatk-extensions.skipped=true"
mvn_args="${mvn_args} -Dsting.jar.phase=none -Dsting.unpack.phase=none -Dsting.shade.phase=none"
mvn_args="${mvn_args} -Dsting.packagecommittests.skipped=false"
# TODO: This runs only the pipeline tests (full, non-dry run), but not the commit tests for Queue.
elif [[ "${arg}" == "queuefull.binary.release.tests" ]] ; then
local_repo="sitetemprepo"
mvn_args="install -Dmaven.repo.local=${local_repo} && mvn verify"
mvn_args="${mvn_args} -Dmaven.repo.local=${local_repo} -Dmaven.javadoc.skip=true"
mvn_args="${mvn_args} -Dsting.generate-gatk-extensions.skipped=true"
mvn_args="${mvn_args} -Dsting.jar.phase=none -Dsting.unpack.phase=none -Dsting.shade.phase=none"
mvn_args="${mvn_args} -Dsting.packagepipelinetests.skipped=false"
mvn_args="${mvn_args} -Dsting.pipelinetests.run=true"
elif [[ "${arg}" == "committests" ]] ; then
mvn_args="verify -Dsting.committests.skipped=false"
elif [[ "${arg}" == "test" ]] ; then
mvn_args="test -Dsting.unittests.skipped=false"
elif [[ "${arg}" == "unittest" ]] ; then
mvn_args="test -Dsting.unittests.skipped=false"
elif [[ "${arg}" == "integrationtest" ]] ; then
mvn_args="verify -Dsting.integrationtests.skipped=false"
elif [[ "${arg}" == "largescaletest" ]] ; then
mvn_args="verify -Dsting.largescaletests.skipped=false"
elif [[ "${arg}" == "pipelinetest" ]] ; then
mvn_args="verify -Dsting.pipelinetests.skipped=false"
elif [[ "${arg}" == "pipelinetestrun" ]] ; then
mvn_args="verify -Dsting.pipelinetests.skipped=false -Dsting.pipelinetests.run=true"
elif [[ "${arg}" == "fasttest" ]] ; then
mvn_args="verify -Dsting.committests.skipped=false -pl private/gatk-private -am -Dresource.bundle.skip=true"
else
unknown_args="${unknown_args} \"${arg}\""
fi
fi
done
mvn_cmd=
if [[ "${mvn_clean}" != "" ]] ; then
if [[ "${mvn_args}" != "" ]] ; then
mvn_cmd="mvn ${mvn_clean} && mvn ${mvn_args}"
else
mvn_cmd="mvn ${mvn_clean}"
fi
else
mvn_cmd="mvn ${mvn_args}"
fi
if [[ "${unknown_args}" != "" ]] ; then
echo "Unrecognized arguments:${unknown_args}" >&2
else
echo "Equivalent maven command"
echo "${mvn_cmd}${mvn_properties}${post_script}"
if [[ "${run_type}" != "dry" ]] ; then
sh -c "${mvn_cmd}${mvn_properties}${post_script}"
fi
fi

1518
build.xml

File diff suppressed because it is too large Load Diff

117
ivy.xml
View File

@ -1,117 +0,0 @@
<!--
~ Copyright (c) 2012, The Broad Institute
~
~ Permission is hereby granted, free of charge, to any person
~ obtaining a copy of this software and associated documentation
~ files (the "Software"), to deal in the Software without
~ restriction, including without limitation the rights to use,
~ copy, modify, merge, publish, distribute, sublicense, and/or sell
~ copies of the Software, and to permit persons to whom the
~ Software is furnished to do so, subject to the following
~ conditions:
~
~ The above copyright notice and this permission notice shall be
~ included in all copies or substantial portions of the Software.
~ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
~ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
~ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
~ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
~ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
~ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
~ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
~ OTHER DEALINGS IN THE SOFTWARE.
-->
<ivy-module version="1.0">
<info organisation="org.broadinstitute" module="Sting"/>
<configurations>
<conf name="default" description="the core dependencies for the GATK"/>
</configurations>
<dependencies defaultconf="default">
<dependency org="net.sf" name="sam" rev="latest.integration"/>
<dependency org="net.sf" name="picard" rev="latest.integration"/>
<dependency org="edu.mit.broad" name="picard-private-parts" rev="latest.integration"/>
<!-- Tribble -->
<dependency org="org.broad" name="tribble" rev="latest.integration"/>
<!-- Variant -->
<dependency org="org.broadinstitute" name="variant" rev="latest.integration"/>
<dependency org="log4j" name="log4j" rev="1.2.15"/>
<dependency org="javax.mail" name="mail" rev="1.4.4"/>
<dependency org="colt" name="colt" rev="1.2.0"/>
<dependency org="it.unimi.dsi" name="fastutil" rev="6.5.3" />
<!-- <dependency org="jboss" name="javassist" rev="3.7.ga"/> -->
<dependency org="org.simpleframework" name="simple-xml" rev="2.0.4"/>
<dependency org="org.apache.bcel" name="bcel" rev="5.2"/>
<!-- Dependencies for reflections mvn repository -->
<dependency org="org.reflections" name="reflections" rev="0.9.8"/>
<dependency org="org.slf4j" name="slf4j-log4j12" rev="1.6.1"/>
<!-- Matrix package from math.nist.gov -->
<dependency org="gov.nist" name="Jama" rev="1.0.2"/>
<!-- Dependencies for the graph aligner -->
<dependency org="net.sf.jgrapht" name="jgrapht" rev="0.8.3"/>
<!-- Dependencies for the html walker documention -->
<dependency org="org.freemarker" name="freemarker" rev="2.3.18"/>
<!-- Commons Dependencies -->
<dependency org="org.apache.commons" name="commons-email" rev="1.2"/>
<dependency org="org.apache.commons" name="commons-jexl" rev="2.1.1"/>
<dependency org="commons-lang" name="commons-lang" rev="2.5"/>
<dependency org="commons-logging" name="commons-logging" rev="1.1.1"/>
<dependency org="commons-io" name="commons-io" rev="2.1"/>
<dependency org="commons-collections" name="commons-collections" rev="3.2.1"/>
<dependency org="org.apache.commons" name="commons-math" rev="2.2"/>
<!-- Lucene core utilities -->
<!-- <dependency org="org.apache.lucene" name="lucene-core" rev="3.0.3"/> -->
<!-- Dependencies for LSF, DRMAA, and other C libraries -->
<dependency org="net.java.dev.jna" name="jna" rev="3.2.7"/>
<!-- Dependencies for amazon.com S3 support -->
<dependency org="net.java.dev.jets3t" name="jets3t" rev="0.8.1"/>
<!-- Dependencies for GridEngine -->
<dependency org="net.sf.gridscheduler" name="drmaa" rev="latest.integration"/>
<!-- Scala dependancies -->
<dependency org="org.scala-lang" name="scala-compiler" rev="2.10.2"/>
<dependency org="org.scala-lang" name="scala-library" rev="2.10.2"/>
<!-- testing and evaluation dependencies -->
<dependency org="org.testng" name="testng" rev="6.8"/>
<dependency org="org.uncommons" name="reportng" rev="1.1.2"/>
<dependency org="com.google.caliper" name="caliper" rev="0.5-rc1"/>
<dependency org="com.google.inject" name="guice" rev="3.0"/>
<!-- Contracts for Java and dependencies -->
<dependency org="com.google.code.cofoja" name="cofoja" rev="1.0-r139"/>
<dependency org="asm" name="asm-all" rev="3.3.1"/>
<!-- POI, for reading pipeline files -->
<dependency org="org.apache.poi" name="poi" rev="3.8-beta3"/>
<dependency org="org.apache.poi" name="poi-ooxml" rev="3.8-beta3"/>
<!-- snpEff annotator for pipelines -->
<dependency org="net.sf.snpeff" name="snpeff" rev="2.0.5"/>
<!-- MongoDB for the GXDB project -->
<dependency org="org.mongodb" name="mongo-java-driver" rev="2.7.3"/>
<!-- GSON and HTTP for talking to the REST API on Vanilla Forums -->
<dependency org="com.google.code.gson" name="gson" rev="2.2.2"/>
<dependency org="org.apache.httpcomponents" name="httpclient" rev="4.1.1"/>
<!-- Exclude dependencies on sun libraries where the downloads aren't available but included in the jvm. -->
<exclude org="javax.servlet"/>
<exclude org="javax.jms"/>
<exclude org="com.sun.*"/>
</dependencies>
</ivy-module>

778
pom.xml 100644
View File

@ -0,0 +1,778 @@
<?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>

View File

@ -0,0 +1,146 @@
<?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>
<parent>
<groupId>org.broadinstitute.sting</groupId>
<artifactId>sting-aggregator</artifactId>
<version>2.8-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<artifactId>gatk-protected</artifactId>
<packaging>jar</packaging>
<name>GATK Protected</name>
<properties>
<sting.basedir>${project.basedir}/../..</sting.basedir>
<sting.packagetests.artifactId>gatk-package</sting.packagetests.artifactId>
</properties>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>gatk-framework</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>net.sf.jgrapht</groupId>
<artifactId>jgrapht</artifactId>
</dependency>
<dependency>
<groupId>gov.nist</groupId>
<artifactId>Jama</artifactId>
</dependency>
<dependency>
<groupId>it.unimi.dsi</groupId>
<artifactId>fastutil</artifactId>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>sting-utils</artifactId>
<version>${project.version}</version>
<classifier>test-utils</classifier>
<type>test-jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>gatk-framework</artifactId>
<version>${project.version}</version>
<classifier>test-utils</classifier>
<type>test-jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.caliper</groupId>
<artifactId>caliper</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-resource-bundle-log4j</id>
<phase>prepare-package</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<executions>
<execution>
<id>extract-resource-bundle</id>
<phase>prepare-package</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-invoker-plugin</artifactId>
<executions>
<execution>
<id>package-unittests</id>
</execution>
<execution>
<id>package-integrationtests</id>
</execution>
<execution>
<id>package-largescaletests</id>
</execution>
<execution>
<id>package-pipelinetests</id>
</execution>
</executions>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>private</id>
<activation>
<file>
<exists>${basedir}/../../private/gatk-private/pom.xml</exists>
</file>
</activation>
<build>
<plugins>
<!-- TODO: All tests require access to private. For now. -->
<plugin>
<groupId>com.pyx4j</groupId>
<artifactId>maven-junction-plugin</artifactId>
<executions>
<execution>
<id>link-private-testdata</id>
<phase>process-test-resources</phase>
</execution>
<execution>
<id>unlink-private-testdata</id>
<phase>clean</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>

Some files were not shown because too many files have changed in this diff Show More