<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://people.apache.org/repo/m2-snapshot-repository</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://people.apache.org/repo/m2-snapshot-repository</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>