<?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>
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.apache.tuscany.sca</groupId>
        <artifactId>tuscany-tutorial-store</artifactId>
        <version>1.7-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>
    <artifactId>tutorial-store-eu</artifactId>
    <name>Apache Tuscany SCA Store Tutorial EU Online Store</name>

    <repositories>
       <repository>
          <id>apache.incubator</id>
          <url>http://people.apache.org/repo/m2-incubating-repository</url>
       </repository>
    </repositories>

    <build>
       <finalName>${artifactId}</finalName>
       <sourceDirectory>${basedir}</sourceDirectory>
       <resources>
          <resource>
              <directory>${basedir}</directory>
              <excludes>
                  <exclude>**/*.java</exclude>
                  <exclude>**/.*/**</exclude>
                  <exclude>pom.xml</exclude>
                  <exclude>build*.xml</exclude>
                  <exclude>target/**</exclude>
              </excludes>
          </resource>
       </resources>
       <plugins>
	        <plugin>
	             <groupId>org.codehaus.mojo</groupId>
	             <artifactId>sql-maven-plugin</artifactId>
	             <version>1.3</version>
	
	             <dependencies>
	                 <dependency>
	                     <groupId>org.apache.derby</groupId>
	                     <artifactId>derby</artifactId>
	                     <version>10.3.1.4</version>
	                 </dependency>
	             </dependencies>
	
	             <executions>
	                 <execution>
	                     <id>create-db</id>
	                     <phase>generate-resources</phase>
	                     <goals>
	                         <goal>execute</goal>
	                     </goals>
	                     <configuration>
	                         <driver>org.apache.derby.jdbc.EmbeddedDriver</driver>
	                         <url>jdbc:derby:${basedir}/target/cart-eu-db;create=true</url>
	                         <autocommit>true</autocommit>
	                         <onError>continue</onError>
	                         <delimiter>;</delimiter>
	                         <srcFiles>
	                             <srcFile>${basedir}/../assets/services/db/cart.sql</srcFile>
	                         </srcFiles>
	                     </configuration>
	                 </execution>
	             </executions>
	         </plugin>
       </plugins>
    </build>

</project>
