<?xml version="1.0"?>
<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>
    <parent>
        <artifactId>easyb-maven-parent</artifactId>
        <groupId>org.easyb</groupId>
        <version>1.3</version>
    </parent>
    <artifactId>easyb-core</artifactId>
    <version>1.2.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>easyb-core</name>
    <description>A behavior driven development framework for the Java platform</description>
    <url>http://www.easyb.org</url>
    <developers>
        <developer>
            <id>ajglover</id>
            <name>Andy Glover</name>
        </developer>
        <developer>
            <id>kenneth.s.brooks</id>
            <name>Ken Brooks</name>
        </developer>
        <developer>
            <id>rfciii</id>
            <name>Rod Coffin</name>
            <email>rod@rodcoffin.com</email>
            <url>http://www.rodcoffin.com</url>
        </developer>
        <developer>
            <id>rvowles</id>
            <name>Richard Vowles</name>
            <email>richard@bluetrainsoftware.com</email>
            <url>http://www.bluetrainsoftware.com</url>
        </developer>
    </developers>
    <licenses>
        <license>
            <name>MIT License</name>
            <url>http://www.opensource.org/licenses/mit-license.php</url>
        </license>
    </licenses>
    <mailingLists>
        <mailingList>
            <name>easyb users</name>
            <archive>http://groups.google.com/group/easyb-users</archive>
            <subscribe>http://groups.google.com/group/easyb-users</subscribe>
            <unsubscribe>http://groups.google.com/group/easyb-users</unsubscribe>
            <post>http://groups.google.com/group/easyb-users</post>
        </mailingList>
        <mailingList>
            <name>easyb dev</name>
            <archive>http://groups.google.com/group/easyb-dev</archive>
            <subscribe>http://groups.google.com/group/easyb-dev</subscribe>
            <unsubscribe>http://groups.google.com/group/easyb-dev</unsubscribe>
            <post>http://groups.google.com/group/easyb-dev</post>
        </mailingList>
        <mailingList>
            <name>easyb commits</name>
            <archive>http://groups.google.com/group/easyb-commits</archive>
            <subscribe>http://groups.google.com/group/easyb-commits</subscribe>
            <unsubscribe>http://groups.google.com/group/easyb-commits</unsubscribe>
            <post>http://groups.google.com/group/easyb-commits</post>
        </mailingList>
    </mailingLists>
    <scm>
        <!-- this is the format documented in the 1.4 SCM plugin -->
        <connection>scm:git:git@github.com:easyb/easyb-core</connection>
        <developerConnection>scm:git:git@github.com:easyb/easyb-core</developerConnection>
        <url>http://github.com/easyb/easyb-core</url>
    </scm>
    <issueManagement>
        <system>Google Code</system>
        <url>http://code.google.com/p/easyb/issues/</url>
    </issueManagement>
    <dependencies>
        <dependency>
            <groupId>org.easyb</groupId>
            <artifactId>easyb-composite-groovy</artifactId>
            <version>[1, 2)</version>
            <type>pom</type>
        </dependency>
        <dependency>
            <groupId>commons-cli</groupId>
            <artifactId>commons-cli</artifactId>
            <version>[1.2]</version>
        </dependency>
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>[2.5]</version>
        </dependency>
        <dependency>
            <groupId>ant</groupId>
            <artifactId>ant</artifactId>
            <version>[1.6.5, 1.8.99)</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>2.1.2</version>
            </plugin>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <version>1.4.0</version>
                <extensions>true</extensions>
                <executions>
                    <execution>
                        <id>bundle-manifest</id>
                        <phase>process-classes</phase>
                        <goals>
                            <goal>manifest</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <instructions>
                        <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
                        <Bundle-Version>${project.version}</Bundle-Version>
                        <Import-Package>*,groovy.text,org.apache.tools.ant;version="[1.6.5,
                            1.8.99)";resolution:=optional,org.apache.tools.ant.types;version="[1.6.5,
                            1.8.99)";resolution:=optional,org.apache.tools.ant.taskdefs;version="[1.6.5,
                            1.8.99)";resolution:=optional
                        </Import-Package>
                        <Export-Package>org.easyb;version="${project.version}",
                            org.easyb.ant;version="${project.version}",
                            org.easyb.delegates;version="${project.version}",
                            org.easyb.domain;version="${project.version}",
                            org.easyb.exception;version="${project.version}",
                            org.easyb.listener;version="${project.version}",
                            org.easyb.plugin;version="${project.version}",
                            org.easyb.report;version="${project.version}",
                            org.easyb.result;version="${project.version}",
                            org.easyb.util;version="${project.version}"
                        </Export-Package>
                    </instructions>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.3.1</version>
                <configuration>
                    <archive>
                        <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <executions>
                    <execution>
                        <id>test-behaviors</id>
                        <phase>test</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <tasks>
                                <property name="compile_classpath" refid="maven.compile.classpath"/>
                                <property name="runtime_classpath" refid="maven.runtime.classpath"/>
                                <property name="test_classpath" refid="maven.test.classpath"/>
                                <property name="plugin_classpath" refid="maven.plugin.classpath"/>
                                <!--
                                        <echo message="compile classpath: ${compile_classpath}" />
                                        <echo message="runtime classpath: ${runtime_classpath}" />
                                        <echo message="test classpath: ${test_classpath}" />
                                        <echo message="plugin classpath: ${plugin_classpath}" />
                                        <echo message=" test classes ${project.build.directory}/test-classes" />
                                        -->
                                <mkdir dir="${project.build.directory}/reports"/>
                                <taskdef name="easyb" classname="org.easyb.ant.BehaviorRunnerTask">
                                    <classpath>
                                        <path refid="maven.runtime.classpath"/>
                                        <pathelement location="${project.build.directory}/classes"/>
                                    </classpath>
                                </taskdef>
                                <easyb failureProperty="easyb.failed"
                                       failureFile="${project.build.directory}/reports/failures.txt" parallel="false">
                                    <classpath>
                                        <path refid="maven.runtime.classpath"/>
                                        <pathelement location="${project.build.directory}/classes"/>
                                        <pathelement location="${project.build.directory}/test-classes"/>
                                    </classpath>
                                    <jvmarg value="-Deasyb.test.source.dir=${project.basedir}/src/test"/>
                                    <jvmarg value="-Deasyb.reports.dir=${project.build.directory}/reports"/>
                                    <jvmarg value="-Deasyb.ast.suffixes=shared"/>
                                    <jvmarg value="-Deasyb.test=${easyb.test}"/>
                                    <jvmarg value="-Deasyb.ast.debug=true"/>
                                    <report location="${project.build.directory}/reports/easyb-report.html"
                                            format="html"/>
                                    <report location="${project.build.directory}/reports/easyb-report.xml"
                                            format="xml"/>
                                    <report location="${project.build.directory}/reports/easyb-junit-report.xml"
                                            format="junit"/>
                                    <report location="${project.build.directory}/reports/story-report.txt"
                                            format="txtstory"/>
                                    <report location="${project.build.directory}/reports/specification-report.txt"
                                            format="txtspecification"/>
                                    <behaviors dir="${project.basedir}/src/test/groovy">
                                        <include name="**/*Story.groovy"/>
                                        <include name="**/*.story"/>
                                        <include name="**/*Specification.groovy"/>
                                        <include name="**/*.specification"/>
                                        <include name=""/>
                                        <exclude name="**/TextStoryReportingValidation.story"/>
                                        <exclude name="**/FailureReport.story"/>
                                        <exclude name="**/PassingPendingFailingStory.story"/>
                                        <exclude name="**/PassingPendingFailing.specification"/>
                                        <exclude name="**/ExceptionalOccurrence.story"/>
                                        <exclude name="**/HtmlReportingStory.groovy"/>
                                        <exclude name="**/Issue116.story"/>
                                    </behaviors>
                                </easyb>
                                <fail if="easyb.failed" message="Execution halted as specifications/stories failed"/>
                            </tasks>
                        </configuration>
                    </execution>

                    <!-- although this execution works, it doesn't actually assert anything different from the one above, so its a bit worthless -->
                    <!--
                         <execution>
                             <id>test-no-execute</id>
                             <phase>test</phase>
                             <goals>
                                 <goal>run</goal>
                             </goals>
                             <configuration>
                                 <tasks>

                                     <taskdef name="easyb" classname="org.easyb.ant.BehaviorRunnerTask">
                                         <classpath>
                                             <path refid="maven.runtime.classpath" />
                                             <pathelement location="${project.build.directory}/classes" />
                                         </classpath>
                                     </taskdef>
                                     <easyb failureProperty="easyb.failed" failureFile="${project.build.directory}/reports/failures.txt" noExecute="true">
                                         <classpath>
                                             <path refid="maven.runtime.classpath" />
                                             <pathelement location="${project.build.directory}/classes" />
                                             <pathelement location="${project.build.directory}/test-classes" />
                                         </classpath>
                                         <jvmarg value="-Deasyb.test.source.dir=${project.basedir}/src/test" />
                                         <jvmarg value="-Deasyb.reports.dir=${project.build.directory}/reports" />
                                         <report location="${project.build.directory}/reports/easyb-report.xml" format="xml" />
                                         <behaviors dir="${project.basedir}/src/test/groovy">
                                             <include name="**/*Story.groovy" />
                                             <include name="**/*.story" />
                                             <include name="**/*Specification.groovy" />
                                             <include name="**/*.specification" />
                                             <exclude name="**/TextStoryReportingValidation.story" />
                                             <exclude name="**/FailureReport.story" />
                                             <exclude name="**/PassingPendingFailingStory.story" />
                                             <exclude name="**/PassingPendingFailing.specification" />
                                             <exclude name="**/ExceptionalOccurrence.story" />
                                             <exclude name="**/HtmlReportingStory.groovy" />
                                             <exclude name="**/Issue116.story" />
                                             <exclude name="**/Ignore*.story" />
                                             <exclude name="**/OneTimeFixture*.story" />
                                             <exclude name="**/WhenUsingPlugin*.story" />
                                             <exclude name="**/Sample*.story"/>
                                         </behaviors>
                                     </easyb>
                                     <fail if="easyb.failed" message="Execution halted as specifications/stories failed" />
                                 </tasks>
                             </configuration>
                         </execution>
                         -->
                    <execution>
                        <!-- this one runs a specific report to generate a specific report which the next test then checks -->
                        <id>test-report-build-story-output</id>
                        <phase>test</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <tasks>
                                <taskdef name="easyb" classname="org.easyb.ant.BehaviorRunnerTask">
                                    <classpath>
                                        <path refid="maven.runtime.classpath"/>
                                        <pathelement location="${project.build.directory}/classes"/>
                                    </classpath>
                                </taskdef>
                                <easyb failureProperty="easyb.failed"
                                       failureFile="${project.build.directory}/reports/failures.txt" parallel="false">
                                    <classpath>
                                        <path refid="maven.runtime.classpath"/>
                                        <pathelement location="${project.build.directory}/classes"/>
                                        <pathelement location="${project.build.directory}/test-classes"/>
                                    </classpath>
                                    <jvmarg value="-Deasyb.test.source.dir=${project.basedir}/src/test"/>
                                    <jvmarg value="-Deasyb.reports.dir=${project.build.directory}/reports"/>
                                    <report location="${project.build.directory}/reports/valid-report.txt"
                                            format="txtstory"/>
                                    <behaviors dir="${project.basedir}/src/test/groovy">
                                        <include name="**/AndChainedFeature.story"/>
                                    </behaviors>
                                </easyb>
                                <fail if="easyb.failed" message="Execution halted as specifications/stories failed"/>
                            </tasks>
                        </configuration>
                    </execution>
                    <execution>
                        <!-- this one runs a specific report to generate a FAILED report which the next test then checks -->
                        <id>test-report-build-story-failed</id>
                        <phase>test</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <tasks>
                                <taskdef name="easyb" classname="org.easyb.ant.BehaviorRunnerTask">
                                    <classpath>
                                        <path refid="maven.runtime.classpath"/>
                                        <pathelement location="${project.build.directory}/classes"/>
                                    </classpath>
                                </taskdef>
                                <easyb failureProperty="easyb.failed"
                                       failureFile="${project.build.directory}/reports/failures.txt" parallel="false">
                                    <classpath>
                                        <path refid="maven.runtime.classpath"/>
                                        <pathelement location="${project.build.directory}/classes"/>
                                        <pathelement location="${project.build.directory}/test-classes"/>
                                    </classpath>
                                    <jvmarg value="-Deasyb.test.source.dir=${project.basedir}/src/test"/>
                                    <jvmarg value="-Deasyb.reports.dir=${project.build.directory}/reports"/>
                                    <report location="${project.build.directory}/reports/valid-report-failure.txt"
                                            format="txtstory"/>
                                    <behaviors dir="${project.basedir}/src/test/groovy">
                                        <include name="**/FailureReport.story"/>
                                    </behaviors>
                                </easyb>
                                <fail unless="easyb.failed"
                                      message="Execution halted as specifications/stories didn't fail"/>
                            </tasks>
                        </configuration>
                    </execution>
                    <execution>
                        <!-- this one checks the story output -->
                        <id>test-report-check-story-output</id>
                        <phase>test</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <tasks>
                                <taskdef name="easyb" classname="org.easyb.ant.BehaviorRunnerTask">
                                    <classpath>
                                        <path refid="maven.runtime.classpath"/>
                                        <pathelement location="${project.build.directory}/classes"/>
                                    </classpath>
                                </taskdef>
                                <easyb failureProperty="easyb.failed"
                                       failureFile="${project.build.directory}/reports/failures.txt" parallel="false">
                                    <classpath>
                                        <path refid="maven.runtime.classpath"/>
                                        <pathelement location="${project.build.directory}/classes"/>
                                        <pathelement location="${project.build.directory}/test-classes"/>
                                    </classpath>
                                    <jvmarg value="-Deasyb.test.source.dir=${project.basedir}/src/test"/>
                                    <jvmarg value="-Deasyb.reports.dir=${project.build.directory}/reports"/>
                                    <report location="${project.build.directory}/reports/valid-reporting.txt"
                                            format="txtstory"/>
                                    <behaviors dir="${project.basedir}/src/test/groovy">
                                        <include name="**/TextStoryReportingValidation.story"/>
                                    </behaviors>
                                </easyb>
                                <fail if="easyb.failed" message="Execution halted as specifications/stories failed"/>
                            </tasks>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
        <extensions>
            <!-- Enabling the use of FTP -->
            <extension>
                <groupId>org.apache.maven.wagon</groupId>
                <artifactId>wagon-ftp</artifactId>
                <version>1.0-beta-6</version>
            </extension>
        </extensio