<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">

<!--

    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.
-->

    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.apache.servicemix.examples</groupId>
        <artifactId>examples</artifactId>
        <version>4.1.0-SNAPSHOT</version>
    </parent>

    <groupId>org.apache.servicemix.examples</groupId>
    <artifactId>cxf-wsdl-first</artifactId>
    <name>ServiceMix :: Samples :: CXF WSDL first</name>
    <packaging>pom</packaging>
    
    <!-- Add ServiceMix repositories for snaphots and releases -->
    <pluginRepositories>
      <pluginRepository>
        <id>apache.snapshots</id>
        <name>Apache Snapshots Repository</name>
        <url>http://repository.apache.org/content/groups/snapshots-group</url>
        <snapshots>
          <enabled>true</enabled>
        </snapshots>
        <releases>
           <enabled>false</enabled>
        </releases>
      </pluginRepository>
      <pluginRepository>
        <id>apache.incubating</id>
        <name>Apache Incubating Repository</name>
        <url>http://people.apache.org/repo/m2-incubating-repository</url>
        <snapshots>
          <enabled>false</enabled>
        </snapshots>
        <releases>
           <enabled>true</enabled>
        </releases>
      </pluginRepository>
    </pluginRepositories>
    <repositories>
      <repository>
        <id>apache.snapshots</id>
        <name>Apache Snapshots Repository</name>
        <url>http://repository.apache.org/content/groups/snapshots-group</url>
        <snapshots>
          <enabled>true</enabled>
        </snapshots>
        <releases>
           <enabled>false</enabled>
        </releases>
      </repository>
      <repository>
        <id>apache.incubating</id>
        <name>Apache Incubating Repository</name>
        <url>http://people.apache.org/repo/m2-incubating-repository</url>
        <snapshots>
          <enabled>false</enabled>
        </snapshots>
        <releases>
           <enabled>true</enabled>
        </releases>
      </repository>
    </repositories>
    
    <modules>
      <module>wsdl-first-cxfse-su</module>
      <module>wsdl-first-cxfbc-su</module>
      <module>wsdl-first-cxf-sa</module>
      <module>client</module>
    </modules> 
    
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>${maven.assembly.version}</version>
                <inherited>false</inherited>
                <executions>
                    <execution>
                        <id>src</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <configuration>
                            <descriptors>
                                <descriptor>src/main/assembly/src.xml</descriptor>
                            </descriptors>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.servicemix.tooling</groupId>
                <artifactId>jbi-maven-plugin</artifactId>
                <version>${servicemix-jbi-plugin-version}</version>
                <extensions>true</extensions>
            </plugin>
        </plugins>
    </build>
</project>