<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.codehaus.enunciate</groupId>
    <artifactId>enunciate-parent</artifactId>
    <version>1.25</version>
  </parent>

  <artifactId>enunciate-csharp</artifactId>
  <name>Enunciate - C# Module</name>
  <description>The Enunciate C# module generates the C# client code for accessing the Enunciate services.</description>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <executions>
          <execution>
            <id>require.gmcs.or.skip</id>
            <phase>validate</phase>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requireProperty>
                  <property>gmcs.executable</property>
                  <message>In order to build the C# module, you must have Mono installed.
First install Mono for your platform. (See http://mono-project.com/Start and note there's a Windows version of Mono, too.)
Then, define a profile in your settings.xml file that defines the path to your 'gmcs' executable in the property 'gmcs.executable'.
If you just want to skip the C# tests, set the value of the property 'gmcs.executable' to be 'true'. (And don't ask any questions about why that works. Maven mess.)</message>
                </requireProperty>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <!--
        we need to generate some C# client-side classes for testing purposes.
        we'll use the Enunciate ant task to do it.
        -->
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <execution>
            <id>enunciate</id>
            <phase>generate-test-resources</phase>
            <configuration>
              <tasks>
                <path id="enunciate.classpath">
                  <path refid="maven.test.classpath" />
                  <pathelement location="${java.home}/../lib/tools.jar" />
                </path>

                <taskdef name="enunciate" classname="org.codehaus.enunciate.main.EnunciateTask">
                  <classpath refid="enunciate.classpath" />
                </taskdef>

                <mkdir dir="${project.build.directory}/enunciate/gen" />
                <mkdir dir="${project.build.directory}/enunciate/compile" />
                <mkdir dir="${project.build.directory}/enunciate/compile/csharp" />
                <mkdir dir="${project.build.directory}/xmltests"/>

                <enunciate target="compile" basedir="${basedir}/src/test/schema"
                           generateDir="${project.build.directory}/enunciate/gen"
                           compileDir="${project.build.directory}/enunciate/compile">
                  <include name="**/*.java" />
                  <classpath refid="enunciate.classpath" />
                </enunciate>
              </tasks>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>1.1.1</version>
        <executions>
          <execution>
            <id>compile-cs</id>
            <phase>test-compile</phase>
            <goals>
              <goal>exec</goal>
            </goals>
            <configuration>
              <!--compile the C# tests using the csc executable. -->
              <executable>${gmcs.executable}</executable>
              <skip>${gmcs.executable}</skip>
              <arguments>
                <argument>/out:${project.build.directory}/enunciate/compile/csharp/processxml.exe</argument>
                <argument>/r:System.Web.Services</argument>
                <argument>${project.build.directory}/enunciate/gen/csharp/enunciate.cs</argument>
                <argument>${project.build.testSourceDirectory}/../cs/ProcessXml.cs</argument>
              </arguments>
              <workingDirectory>${project.build.directory}</workingDirectory>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <systemProperties>
            <property>
              <name>skip.csharp.tests</name>
              <value>${gmcs.executable}</value>
            </property>
            <property>
              <name>processxml.exe</name>
              <value>${project.build.directory}/enunciate/compile/csharp/processxml.exe</value>
            </property>
            <property>
              <name>xml.tempdir</name>
              <value>${project.build.directory}/xmltests</value>
            </property>
          </systemProperties>
        </configuration>
      </plugin>
      <plugin>
        <!--now we need to add the generated sources we're testing to the test classpath-->
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>add-test-source</id>
            <phase>generate-sources</phase>
            <goals>
              <goal>add-test-source</goal>
            </goals>
            <configuration>
              <sources>
                <source>${basedir}/src/test/schema</source>
              </sources>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <dependencies>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>enunciate-core</artifactId>
      <version>${project.version}</version>
    </dependency>

    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>enunciate-core</artifactId>
      <version>${project.version}</version>

      <classifier>tests</classifier>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>joda-time</groupId>
      <artifactId>joda-time</artifactId>

      <!--for testing the xmladapters only-->
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>com.sun.xml.bind</groupId>
      <artifactId>jaxb-impl</artifactId>

      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>javax.mail</groupId>
      <artifactId>mail</artifactId>

      <scope>test</scope>
    </dependency>
  </dependencies>


</project>
