<?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>
  <packaging>bundle</packaging>
  <name>XmlSchema</name>
  <version>1.4.6</version>
  <parent>
    <groupId>org.apache</groupId>
    <artifactId>apache</artifactId>
    <version>6</version>
  </parent>
  <description>Commons XMLSchema is a light weight schema object model that can be used to manipulate 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 dependencies 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>
  <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>
  <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/tags/XmlSchema/XmlSchema-1.4.6</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/webservices/commons/tags/XmlSchema/XmlSchema-1.4.6</developerConnection>
    <url>http://svn.apache.org/viewvc/webservices/commons/tags/XmlSchema/XmlSchema-1.4.6</url>
  </scm>
  <organization>
    <name>The Apache Software Foundation</name>
    <url>http://www.apache.org/</url>
  </organization>
  <build>
    <!-- adding relevant resources to the jar files -->
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
      </resource>
    </resources>
    <testResources>
      <testResource>
        <directory>src/test/test-resources</directory>
      </testResource>
    </testResources>
    <plugins>
      <plugin>	 
        <artifactId>maven-remote-resources-plugin</artifactId>
        <version>1.0</version>
        <executions>
            <execution>
                <goals>
                    <goal>process</goal>
                </goals>
                <configuration>
                    <resourceBundles>
                        <resourceBundle>org.apache:apache-jar-resource-bundle:1.4</resourceBundle>
                    </resourceBundles>
                    <properties>
                        <projectName>Apache WebServices - XmlSchema</projectName>
                    </properties>
                </configuration>
            </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 value="${maven.test.skip}" name="maven.test.skip" />
                  <target name="prepareNistTest" />
                </ant>
              </tasks>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
          <groupId>org.apache.felix</groupId>
          <artifactId>maven-bundle-plugin</artifactId>
          <version>2.0.0</version>
          <extensions>true</extensions>
          <configuration>
              <instructions>
                  <Import-Package>org.apache.ws.commons.schema*;version=${pom.version},*</Import-Package>
                  <Export-Package>org.apache.ws.commons.schema*;version="${pom.version}"</Export-Package>
              </instructions>
          </configuration>
      </plugin>
    </plugins>
    <defaultGoal>install</defaultGoal>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-scm-plugin</artifactId>
          <version>1.1</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <configuration>
            <archive>
              <manifestFile>target/classes/META-INF/MANIFEST.MF</manifestFile>
            </archive>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-release-plugin</artifactId>
          <version>2.0</version>
          <configuration>
            <tagBase>https://svn.apache.org/repos/asf/webservices/commons/tags/XmlSchema</tagBase>
            <useReleaseProfiles>true</useReleaseProfiles>
            <releaseProfiles>xmlschema_release,release,fastinstall</releaseProfiles>
            <remoteTagging>true</remoteTagging>
            <preparationGoals>clean install</preparationGoals>
            <goals>deploy</goals>
          </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>
          <configuration>
            <includes>
              <include>**/*Test.java</include>
              <include>**/Test*.java</include>
  <!--
                              Fails in about half of the tests
                              <include>tests/w3c/TestW3CSchemaBucket.java</include>
                          -->
            </includes>
            <excludes>
              <exclude>tests/w3c/**.java</exclude>
            </excludes>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>2.2-beta-5</version>
          <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-site-plugin</artifactId>
           <executions>
             <execution>
               <id>site</id>
               <phase>package</phase>
               <goals>
                 <goal>site</goal>
               </goals>
             </execution>
           </executions>
         </plugin>
        <plugin>
          <artifactId>maven-source-plugin</artifactId>
          <executions>
            <execution>
              <goals>
                <goal>jar</goal>
              </goals>
            </execution>
          </executions>
          <configuration>
            <attach>true</attach>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
  <profiles>
        <profile>
            <id>fastinstall</id>
            <properties>
                <maven.test.skip>true</maven.test.skip>
                <pmd.skip>true</pmd.skip>
                <checkstyle.skip>true</checkstyle.skip>
            </properties>
        </profile>

        <profile>
            <id>release</id>
            <build>
                <plugins>
                    <!--
    We want to sign the artifact, the POM, and all attached artifacts
-->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>sign</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                      <artifactId>maven-site-plugin</artifactId>
                      <executions>
                        <execution>
                          <id>site</id>
                          <phase>validate</phase>
                          <goals>
                            <goal>site</goal>
                          </goals>
                        </execution>
                      </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>single</id>
                                <phase>package</phase>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>attach-sources</id>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <configuration>
                            <encoding>${project.build.sourceEncoding}</encoding>
                            <attach>true</attach>
                        </configuration>
                        <executions>
                            <execution>
                                <id>attach-javadocs</id>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    <profile>
      <id>DefaultTest</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
              <includes>
                <include>**/*Test.java</include>
                <include>**/Test*.java</include>
<!--
									Fails in about half of the tests
									<include>tests/w3c/TestW3CSchemaBucket.java</include>
								-->
              </includes>
              <excludes>
                <exclude>
									tests/w3c/**.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>
            <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>
  <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>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-site-plugin</artifactId>
        <version>2.1</version>
        <configuration>
          <dependencyDetailsEnabled>false</dependencyDetailsEnabled>
          <dependencyLocationsEnabled>false</dependencyLocationsEnabled>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-project-info-reports-plugin</artifactId>
        <version>2.1.2</version>
        <configuration>
          <dependencyDetailsEnabled>false</dependencyDetailsEnabled>
          <dependencyLocationsEnabled>false</dependencyLocationsEnabled>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>jdepend-maven-plugin</artifactId>
        <version>2.0-beta-2</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>
    <site>
      <id>website</id>
      <url>scpexe://people.apache.org/www/ws.apache.org/commons/XmlSchema</url>
    </site>
  </distributionManagement>
</project>
