<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one
  ~ or more contributor license agreements. See the NOTICE file
  ~ distributed with this work for additional information
  ~ regarding copyright ownership. The ASF licenses this file
  ~ to you under the Apache License, Version 2.0 (the
  ~ "License"); you may not use this file except in compliance
  ~ with the License. You may obtain a copy of the License at
  ~
  ~ http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing,
  ~ software distributed under the License is distributed on an
  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  ~ KIND, either express or implied. See the License for the
  ~ specific language governing permissions and limitations
  ~ under the License.
  -->

<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>
    <groupId>org.apache.ws.commons.schema</groupId>
    <artifactId>XmlSchema</artifactId>
    <name>XmlSchema</name>
    <version>1.4</version>
    <description>Commons XMLSchema is a light weight schema object model that can be used to manipualte or
        generate a schema. It has a clean, easy to use API and can easily be integrated into an existing project
        since it has almost no dependancies on third party libraries.</description>
    <url>http://ws.apache.org/commons/XmlSchema</url>
    <issueManagement>
        <system>JIRA</system>
        <url>http://issues.apache.org/jira/browse/WSCOMMONS</url>
    </issueManagement>
    <ciManagement>
        <system>Continuum</system>
        <url>unknown</url>
        <notifiers>
            <notifier>
                <sendOnError>false</sendOnError>
                <sendOnFailure>false</sendOnFailure>
                <sendOnSuccess>false</sendOnSuccess>
                <sendOnWarning>false</sendOnWarning>
                <configuration>
                    <address>commons-dev@ws.apache.org</address>
                </configuration>
            </notifier>
        </notifiers>
    </ciManagement>
    <mailingLists>
        <mailingList>
            <name>WS Commons Developers</name>
            <subscribe>commons-dev-subscribe@ws.apache.org</subscribe>
            <unsubscribe>commons-dev-unsubscribe@ws.apache.org</unsubscribe>
            <post>commons-dev@ws.apache.org</post>
            <archive>http://mail-archives.apache.org/mod_mbox/ws-commons-dev/</archive>
        </mailingList>
    </mailingLists>
    <inceptionYear>2004</inceptionYear>
    <developers>
        <developer>
            <id>dims</id>
            <name>Davanum Srinivas</name>
            <email>dims AT apache.org</email>
            <organization>IBM</organization>
        </developer>
        <developer>
            <id>sanjiva</id>
            <name>Sanjiva Weerawarana</name>
            <email>sanjiva AT wso2.com</email>
            <organization>WSO2</organization>
        </developer>
        <developer>
            <id>gdaniels</id>
            <name>Glen Daniels</name>
            <email>gdaniels AT apache.org</email>
            <organization>WSO2</organization>
        </developer>
        <developer>
            <id>alek</id>
            <name>Aleksander Slominski</name>
            <email>aslom AT cs.indiana.edu</email>
            <organization>Indiana University,Bloomington</organization>
        </developer>
        <developer>
            <id>hemapani</id>
            <name>Srinath Perera</name>
            <email>hemapani AT apache.org</email>
            <url>http://www.apache.org/~hemapani</url>
            <organization>Indiana University,Bloomington</organization>
        </developer>
        <developer>
            <id>chinthaka</id>
            <name>Eran Chinthaka</name>
            <email>chinthaka AT apache.org</email>
            <url>http://www.apache.org/~chinthaka</url>
            <organization>Indiana University,Bloomington</organization>
        </developer>
        <developer>
            <id>dasarath</id>
            <name>Dasarath Weerathunga</name>
            <email>dasarath AT apache.org</email>
            <organization>Purdue University</organization>
        </developer>
        <developer>
            <id>jaliya</id>
            <name>Jaliya Ekanayake</name>
            <email>jaliya AT apache.org</email>
            <url>http://www.apache.org/~jaliya</url>
            <organization>Indiana University,Bloomington</organization>
        </developer>
        <developer>
            <id>chathura</id>
            <name>Chathura Herath</name>
            <email>chathura AT apache.orgk</email>
            <url>http://www.apache.org/~chathura</url>
            <organization>Indiana University,Bloomington</organization>
        </developer>
        <developer>
            <id>deepal</id>
            <name>Deepal Jayasinghe</name>
            <email>deepal AT wso2.com</email>
            <url>http://www.apache.org/~deepal</url>
            <organization>WSO2</organization>
        </developer>
        <developer>
            <id>ajith</id>
            <name>Ajith Ranabahu</name>
            <email>ajith AT apache.org</email>
            <url>http://www.apache.org/~ajith</url>
            <organization>Wright State University</organization>
        </developer>
        <developer>
            <id>venkat</id>
            <name>Venkat Reddy</name>
            <email>vreddyp AT gmail.com</email>
            <organization>Computer Associates</organization>
        </developer>
        <developer>
            <id>ashu</id>
            <name>Ashutosh Shahi</name>
            <email>Ashutosh.Shahi AT ca.com</email>
            <organization>Computer Associates</organization>
        </developer>
        <developer>
            <id>jaya</id>
            <name>Jayachandra Sekhara Rao Sunkara</name>
            <email>jayachandra AT gmail.com</email>
            <organization>Computer Associates</organization>
        </developer>
        <developer>
            <id>thilina</id>
            <name>Thilina Gunarathne</name>
            <email>thilina AT wso2.com</email>
            <url>http://www.apache.org/~thilina</url>
            <organization>Indiana University,Bloomington</organization>
        </developer>
        <developer>
            <id>ruchith</id>
            <name>Ruchith Fernando</name>
            <email>ruchith AT wso2.com</email>
            <organization>WSO2</organization>
        </developer>
        <developer>
            <id>saminda</id>
            <name>Saminda Abeyruwan</name>
            <email>saminda AT wso2.com</email>
            <organization>WSO2</organization>
        </developer>
        <developer>
            <id>chamil</id>
            <name>Chamil Thanthrimudalige</name>
            <email>chamil AT wso2.com</email>
            <organization>WSO2</organization>
        </developer>
        <developer>
            <id>dandiep</id>
            <name>Dan Diephouse</name>
            <email>dandiep AT apache.org</email>
            <organization>Envoi Solutions</organization>
        </developer>
    </developers>
    <licenses>
        <license>
            <name>The Apache Software License, Version 2.0</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
            <distribution>repo</distribution>
        </license>
    </licenses>
    <scm>
        <connection>scm:svn:http://svn.apache.org/repos/asf/webservices/commons/trunk/modules/XmlSchema</connection>
        <developerConnection>
            scm:svn:https://svn.apache.org/repos/asf/webservices/commons/trunk/modules/XmlSchema</developerConnection>
        <url>http://svn.apache.org/viewvc/webservices/commons/trunk/modules/XmlSchema</url>
    </scm>
    <organization>
        <name>Apache Software Foundation</name>
        <url>http://www.apache.org/</url>
    </organization>
    <build>


        <!-- this entry here is for the assembly plugin- For some reason
  		     the assembly plugin cannot override the filter properties (as explained
			 in the docs) and also does not inherit the maven standard properties. This
		     is the one that points to a seperare filter props file --> 
		<filters>
        	<filter>src/main/assembly/filter.properties</filter>
        </filters>

        <!-- adding relevant resources to the jar files -->
       <resources>
          <resource>
             <directory>src/main/resources</directory>
       </resource>
     </resources>

        <plugins>
            <plugin>
              <groupId>org.apache.felix</groupId>
              <artifactId>maven-bundle-plugin</artifactId>
              <version>${bundle.plugin.version}</version>
              <configuration>
                  <instructions>
                      <Bundle-Version>${xmlschema.osgi.version}</Bundle-Version>
                      <!--  The default maven resources will be automatically included ! -->   
                  </instructions>
              </configuration>
              <executions>
                <execution>
                  <id>bundle-manifest</id>
                  <phase>process-classes</phase>
                  <goals>
                    <goal>manifest</goal>
                  </goals>
                </execution>
              </executions>
            </plugin>
            <plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>1.1</version>
                <executions>
                    <execution>
                        <id>prepareNistTest</id>
                        <phase>generate-test-resources</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <tasks>
                                <ant inheritRefs="true" antfile="${basedir}/build.xml">
                                    <property value="${basedir}/target" name="build.dir"></property>
                                    <property value="${maven.test.skip}" name="maven.test.skip"></property>
                                    <target name="prepareNistTest"></target>
                                </ant>
                            </tasks>
                        </configuration>
                    </execution>
                  </executions>
            </plugin>
           <plugin>
                <artifactId>maven-release-plugin</artifactId>
                <configuration>
                    <tagBase>https://svn.apache.org/repos/asf/webservices/commons/tags/XmlSchema</tagBase>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.3</source>
                    <target>1.3</target>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <!--
                        Required to run the TestW3CSchemaBucket test
                        <version>2.3-SNAPSHOT</version>
                -->
                <configuration>
                    <includes>
                        <include>**/*Test.java</include>
                        <!--        Fails in about half of the tests
                                    <include>tests/w3c/TestW3CSchemaBucket.java</include>
                        -->
                    </includes>
                    <excludes>
                        <exclude>tests/w3c/SchemaTest.java</exclude>
                    </excludes>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <descriptors>
                        <descriptor>src/main/assembly/bin.xml</descriptor>
                        <descriptor>src/main/assembly/src.xml</descriptor>
						<descriptor>src/main/assembly/doc.xml</descriptor>
                    </descriptors>
                    <tarLongFileMode>gnu</tarLongFileMode>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-source-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <attach>true</attach>
                </configuration>
            </plugin>
            
        </plugins>
    </build>
    <profiles>
        <profile>
            <id>release</id>
            <activation>
                <property>
                    <name>release</name>
                    <value></value>
                </property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <attach>true</attach>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
        	<id>DefaultTest</id>
        	<activation>
        		<activeByDefault>true</activeByDefault>
        	</activation>
        	<build>
        		<plugins>
        			<plugin>
        				<artifactId>maven-surefire-plugin</artifactId>
        				<!--
        					Required to run the TestW3CSchemaBucket test
        					<version>2.3-SNAPSHOT</version>
        				-->
        				<configuration>
        					<includes>
        						<include>**/*Test.java</include>
        						<!--        Fails in about half of the tests
        							<include>tests/w3c/TestW3CSchemaBucket.java</include>
        						-->
        					</includes>
        					<excludes>
        						<exclude>
        							tests/w3c/SchemaTest.java
        						</exclude>
        					</excludes>
        					<systemProperties>
        						<!--  The default xalan TransformerFactory on the ibm jdk is
        							org.apache.xalan.processor.TransformerFactoryImpl which 
        							has a known issue with implicit namespaces.  Set this 
        							property to use the xsltc TransformerFactory (which 
        							the sun jdk seems to default to).
        						-->
        						<!-- <property>
        							<name>javax.xml.transform.TransformerFactory</name>
        							<value>com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl</value>
        							</property> -->
        					</systemProperties>
        				</configuration>
        			</plugin>
        		</plugins>
        	</build>
        </profile>
        <profile>
        	<id>IBMTest</id>
        	<activation>
        		<property>
        			<name>java.vendor</name>
        			<value>IBM Corporation</value>
        		</property>
        	</activation>
			<dependencies>
				<dependency>
					<groupId>org.apache.bcel</groupId>
					<artifactId>bcel</artifactId>
					<version>5.2</version>
				</dependency>
				<dependency>
					<groupId>xalan</groupId>
					<artifactId>xalan</artifactId>
					<version>2.7.0</version>
				</dependency>
			</dependencies>
        	<build>
        		<plugins>
        			<plugin>
        				<artifactId>maven-surefire-plugin</artifactId>
        				<!--
        					Required to run the TestW3CSchemaBucket test
        					<version>2.3-SNAPSHOT</version>
        				-->
        				<configuration>
        					<includes>
        						<include>**/*Test.java</include>
        						<!--        Fails in about half of the tests
        							<include>tests/w3c/TestW3CSchemaBucket.java</include>
        						-->
        					</includes>
        					<excludes>
        						<exclude>
        							tests/w3c/SchemaTest.java
        						</exclude>
        					</excludes>
        					<systemProperties>
        						<!--  The default xalan TransformerFactory on the ibm jdk is
        							org.apache.xalan.processor.TransformerFactoryImpl which 
        							has a known issue with implicit namespaces.  Set this 
        							property to use the xsltc TransformerFactory (which 
        							the sun jdk seems to default to).
        						-->
        						<property>
        							<name>
        								javax.xml.transform.TransformerFactory
        							</name>
        							<value>
        								org.apache.xalan.xsltc.trax.TransformerFactoryImpl
        							</value>
        						</property>
        					</systemProperties>
        				</configuration>
        			</plugin>
        		</plugins>
        	</build>
        </profile>
    </profiles>
    <pluginRepositories>
        <pluginRepository>
            <id>snapshot</id>
            <name>Snapshot repository</name>
            <url>http://snapshots.maven.codehaus.org/maven2/</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
            <releases>
                <enabled>false</enabled>
            </releases>
        </pluginRepository>
        <pluginRepository>
            <id>snapshot-apache</id>
            <name>Apache Snapshot repository</name>
            <url>http://people.apache.org/repo/m2-snapshot-repository</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
            <releases>
                <enabled>false</enabled>
            </releases>
        </pluginRepository>
    </pluginRepositories>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>xmlunit</groupId>
            <artifactId>xmlunit</artifactId>
            <version>1.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.ws.commons</groupId>
            <artifactId>ws-commons-java5</artifactId>
            <version>1.0.1</version>
            <optional>true</optional>
        </dependency>
    </dependencies>
    <reporting>
        <plugins>
             <plugin>
                <artifactId>maven-project-info-reports-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>jdepend-maven-plugin</artifactId>
                <version>2.0-beta-1</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jxr-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
            </plugin>
        </plugins>
    </reporting>
    <distributionManagement>
        <repository>
            <id>apache-repo</id>
            <name>Maven Central Repository</name>
            <url>scpexe://people.apache.org/www/people.apache.org/repo/m2-ibiblio-rsync-repository</url>
        </repository>
        <snapshotRepository>
            <id>apache-snapshots</id>
            <name>Apache Development Repository</name>
            <url>scpexe://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>
        </snapshotRepository>
        <site>
            <id>website</id>
            <url>scpexe://people.apache.org/www/ws.apache.org/commons/XmlSchema</url>
        </site>
    </distributionManagement>
    <properties>
    	<!--  should the osgi version be the same as the artifact id ?? -->
        <xmlschema.osgi.version>1.4</xmlschema.osgi.version>
        <bundle.plugin.version>1.4.0</bundle.plugin.version>
    </properties>
</project>
