<?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</groupId>
        <artifactId>apache</artifactId>
        <version>10</version>
    </parent>

    <!-- ====================================================================== -->
    <!-- Project description and basic configuration                            -->
    <!-- ====================================================================== -->
    <groupId>org.apache.tuscany.sca</groupId>
    <artifactId>tuscany-sca</artifactId>
    <packaging>pom</packaging>
    <name>Apache Tuscany SCA Implementation Project (2.x)</name>
    <url>http://tuscany.apache.org</url>
    <version>2.5-SNAPSHOT</version>

    <scm>
        <connection>scm:svn:http://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk</connection>
        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk</developerConnection>
        <url>http://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk</url>
    </scm>

    <prerequisites>
        <maven>2.0.6</maven>
    </prerequisites>

    <properties>
        <notice.dir>.</notice.dir>
        <tools.jar>${java.home}/../lib/tools.jar</tools.jar>
        <dojo.version>1.5.0</dojo.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>        
    </properties>

    <issueManagement>
        <system>jira</system>
        <url>http://issues.apache.org/jira/browse/TUSCANY</url>
    </issueManagement>

    <!-- ====================================================================== -->
    <!-- Maven Repositories                                                     -->
    <!-- ====================================================================== -->
    <repositories>
        <!-- Tuscany repository to hold artifacts that are not published in the public maven repos -->
        <repository>
            <id>tuscany.repo</id>
            <name>Tuscany Maven 2.x Repository</name>
            <url>http://svn.apache.org/repos/asf/tuscany/maven</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>apache.nexus</id>
            <name>Apache Nexus repository</name>
            <url>https://repository.apache.org/content/groups/public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
        </repository>
    </repositories>
    <pluginRepositories>
      <pluginRepository>
        <id>apache.snapshots</id>
        <name>Apache Snapshot Repository</name>
        <url>http://repository.apache.org/snapshots</url>
        <releases>
          <enabled>false</enabled>
        </releases>
        <snapshots>
          <enabled>true</enabled>
        </snapshots>
      </pluginRepository> 
    </pluginRepositories>

    <!-- ====================================================================== -->
    <!-- Distribution Management configuration                                  -->
    <!-- ====================================================================== -->
    <distributionManagement>
       <repository>
          <id>apache.releases.https</id>
          <name>Apache Release Distribution Repository</name>
          <url>https://repository.apache.org/service/local/staging/deploy/maven2</url>
       </repository>
       <snapshotRepository>
          <id>apache.snapshots.https</id>
          <name>Apache Development Snapshot Repository</name>
          <url>https://repository.apache.org/content/repositories/snapshots</url>
          <uniqueVersion>false</uniqueVersion>
       </snapshotRepository>
    </distributionManagement>

    <profiles>
        <!-- ====================================================================== -->
        <!-- Default profile                                                        -->
        <!-- ====================================================================== -->
        <profile>
            <id>default</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <modules>
                <module>maven/tuscany-maven-plugin</module>
                <module>modules</module>
                <module>samples</module>
                <module>testing/itest</module>
                <module>features</module>
                <module>distribution</module>
                <module>maven/archetypes</module>
                <module>testing/compliance-tests</module>
            </modules>
        </profile>
        <!-- ====================================================================== -->
        <!-- Default profile to be used in Mac OS environment                       -->
        <!--   Note that this set tools.jar property based on the JDK used in Mac   -->
        <!-- ====================================================================== -->
        <profile>
            <id>default-mac</id>
            <activation>
                <os>
                    <family>mac</family>
                </os>
            </activation>
            <properties>
                <tools.jar>${java.home}/../Classes/classes.jar</tools.jar>
            </properties>
            <modules>
                <module>maven/tuscany-maven-plugin</module>
                <module>maven/tuscany-diagram-plugin</module>
                <module>modules</module>
                <module>samples</module>
                <module>testing/itest</module>
                <module>features</module>
                <module>distribution</module>
                <module>maven/archetypes</module>
                <module>testing/compliance-tests</module>
            </modules>
        </profile>

        <!-- ====================================================================== -->
        <!-- Profile used to generate OSGi based Eclipse IDE project artifacts      -->
        <!-- ====================================================================== -->
        <profile>
            <id>eclipse</id>
            <modules>
                <module>modules</module>
                <module>samples</module>
                <module>testing/itest</module>
                <module>features</module>
                <module>features/eclipse-pde</module>
            </modules>
           <build>
                <defaultGoal>org.apache.tuscany.sca:tuscany-bundle-plugin:eclipse</defaultGoal>
                <pluginManagement>
                <plugins>
                   <plugin> 
                       <groupId>org.apache.tuscany.sca</groupId> 
                       <artifactId>tuscany-bundle-plugin</artifactId> 
                       <version>1.0.8</version> 
                       <extensions>true</extensions> 
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-eclipse-plugin</artifactId>
                        <configuration>
                            <skip>true</skip>
                        </configuration>
                     </plugin>
                 </plugins>
                 </pluginManagement>
            </build>
        </profile>

        <!-- ====================================================================== -->
        <!-- Profile used to generate OSGi based Eclipse IDE project artifacts      -->
        <!--   Note that this set tools.jar property based on the JDK used in Mac   -->
        <!-- ====================================================================== -->
        <profile>
            <id>eclipse-mac</id>
            <properties>
                <tools.jar>${java.home}/../Classes/classes.jar</tools.jar>
            </properties>
            <modules>
                <module>modules</module>
                <module>samples</module>
                <module>testing/itest</module>
                <module>features</module>
                <module>distribution</module>
            </modules>
           <build>
                <defaultGoal>org.apache.tuscany.sca:tuscany-bundle-plugin:eclipse</defaultGoal>
                <pluginManagement>
                <plugins>
                   <plugin> 
                       <groupId>org.apache.tuscany.sca</groupId> 
                       <artifactId>tuscany-bundle-plugin</artifactId> 
                       <version>1.0.8</version> 
                       <extensions>true</extensions> 
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-eclipse-plugin</artifactId>
                        <configuration>
                            <skip>true</skip>
                        </configuration>
                     </plugin>
                 </plugins>
                 </pluginManagement>
            </build>
        </profile>

        <!-- ====================================================================== -->
        <!-- Profile to build release distribution                                  -->
        <!-- ====================================================================== -->
        <profile>
            <id>distribution</id>
            <modules>
                <module>maven/tuscany-maven-plugin</module>
                <module>modules</module>
                <module>samples</module>
                <module>testing/itest</module>
                <module>features</module>
                <module>distribution</module>
                <module>maven/archetypes</module>
                <module>testing/compliance-tests</module>
            </modules>
           <build>
              <plugins>
              </plugins>
           </build>
        </profile>

        <profile>
            <id>compliance</id>
            <modules>
                <module>testing/compliance-tests</module>
            </modules>
        </profile>

<!-- START - WHAT ARE THE FOLLOWING PROFILES FOR? -->
        <!-- ====================================================================== -->
        <!-- Profile to generate source jars for modules                            -->
        <!-- ====================================================================== -->

        <profile>
            <id>source</id>
            <modules>
                <module>modules</module>
            </modules>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                        <version>2.1.1</version>
                        <executions>
                            <execution>
                                <id>attach-sources</id>
                                <goals>
                                    <goal>jar-no-fork</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>         
            </build>
        </profile>

        <profile>
            <id>osgi</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <modules>
               <module>samples</module>
            </modules>
            <build>
                <pluginManagement>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <configuration>
                            <skip>true</skip>
                        </configuration>
                     </plugin>
                 </plugins>
                 </pluginManagement>
                <plugins>
                <plugin>
                    <groupId>org.apache.tuscany.sca</groupId>
                    <artifactId>tuscany-maven-osgi-junit</artifactId>
                    <version>1.0</version>
                    <executions>
                        <execution>
                            <id>osgi-test</id>
                            <phase>test</phase>
                            <goals>
                                <goal>test</goal>
                            </goals>
                        </execution>
                    </executions>
                 </plugin>            
                 </plugins>       
            </build> 
        </profile>  

        <profile>
            <id>dependencies</id>
            <modules>
                <module>modules</module>
                <module>samples</module>
                <module>tutorials</module>
                <module>demos</module>
            </modules>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.tuscany.sca</groupId>
                        <artifactId>tuscany-maven-dependency-lister</artifactId>
                        <version>2.5-SNAPSHOT</version>
                        <executions>
                            <execution>
                                <phase>process-resources</phase>
                                <goals>
                                    <goal>execute</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>           
                </plugins>         
            </build>
        </profile>
        
        <profile>
            <id>security</id>
            <modules>
                <module>testing/itest</module>
            </modules>
            <activation>
                <property>
                    <name>tuscany.policy.file</name>
                </property>
            </activation>
            <properties>
                <tuscany.policy.file>file:///${java.home}/lib/security/tuscany.policy</tuscany.policy.file>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <version>2.4.3</version>
                        <configuration>
                            <includes>
                                <include>**/*TestCase.java</include>
                            </includes>
                            <reportFormat>brief</reportFormat>
                            <useFile>false</useFile>
                            <forkMode>once</forkMode>
                            <!-- Place tuscany.policy in your Java home security directory. Alternatively, hardcode the file location here. -->
                            <argLine>-Djava.security.manager -Djava.security.policy=${tuscany.policy.file} -Dpolicy.allowSystemProperty=true -Djava.security.debug=policy</argLine>
                        </configuration>
                    </plugin>
                </plugins>         
            </build>
        </profile>

        <!-- profile for verifying source code correctness -->
        <profile>
            <id>sourcecheck</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-checkstyle-plugin</artifactId>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-pmd-plugin</artifactId>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <configuration>
                            <source>1.6</source>
                            <target>1.6</target>
                            <showDeprecation>true</showDeprecation>
                            <compilerArgument>-Xlint:unchecked,deprecation,fallthrough,finally</compilerArgument>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!--
          to test this profile you may like to run mvn with arguments ...
          -DaltDeploymentRepository=id::default::file:target/deploy -Prelease -Dgpg.skip
          then look in the target/deploy directory for a locally deployed repository of artifacts 
        -->
        <profile>
            <id>release</id>
            <properties>
                <skipTests>true</skipTests>
                <buildZips>true</buildZips>
            </properties>
            <modules>
                <module>maven/tuscany-maven-plugin</module>
                <module>modules</module>
                <module>features</module>
                <module>distribution</module>
                <module>maven/archetypes</module>
            </modules>
           <build>
              <defaultGoal>deploy</defaultGoal>
              <plugins>
                    <plugin>
                        <artifactId>maven-deploy-plugin</artifactId>
                        <version>2.4</version>
                        <configuration>
                            <updateReleaseInfo>true</updateReleaseInfo>
                        </configuration>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>deploy</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <version>1.1</version>
                        <executions>
                            <execution>
                                <phase>verify</phase>
                                <goals>
                                    <goal>sign</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                        <version>2.1.1</version>
                        <executions>
                            <execution>
                                <id>attach-sources</id>
                                <goals>
                                    <goal>jar-no-fork</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <version>2.6.1</version>
                        <configuration>
                            <maxmemory>1024m</maxmemory>
                            <tags>
                                <tag>
                                    <name>tuscany.spi.extension.inheritfrom</name>
                                    <!-- extension spi by inheritance tag for placing in classes /interfaces -->
                                    <placement>t</placement>
                                    <head>Provides part of the Tuscany SPI for Extension Developers by specialization of this class/interface
                                    </head>
                                </tag>
                                <tag>
                                    <name>tuscany.spi.extension.asclient</name>
                                    <!-- extension spi by client access tag for placing in classes / interfaces. The term client here is used
                                    in the OO design sense of any class that calls the methods of another is a client of the latter -->
                                    <placement>t</placement>
                                    <head>Provides part of the Tuscany SPI for Extension Developers by calling methods on this interface/class.</head>
                                </tag>
                                <tag>
                                    <name>tuscany.spi.extension</name>
                                    <!-- extension spi indicator for overviews, packages -->
                                    <placement>a</placement>
                                    <head>Elements of the Tuscany SPI for Extension developers are provided.</head>
                                </tag>
                            </tags>

 

                            <groups>
                                <!-- beware: this group stanza results in a grouping of pages that contains a superset of the spi, until we complete identification and then refactor out non spi code from listed packages-->
                                <group>
                                    <title>Extension Developer's SPIs (Work in Progress)</title>
                                    <packages>
org.apache.tuscany.sca.assembly:org.apache.tuscany.sca.assembly.builder:org.apache.tuscany.sca.assembly.impl:org.apache.tuscany.sca.assembly.xml:org.apache.tuscany.sca.common.http:org.apache.tuscany.sca.common.xml:org.apache.tuscany.sca.common.xml.dom:org.apache.tuscany.sca.common.xml.stax:org.apache.tuscany.sca.context:org.apache.tuscany.sca.contribution:org.apache.tuscany.sca.contribution.namespace:org.apache.tuscany.sca.contribution.processor:org.apache.tuscany.sca.contribution.resolver:org.apache.tuscany.sca.core:org.apache.tuscany.sca.core.assembly:org.apache.tuscany.sca.core.factory:org.apache.tuscany.sca.core.invocation:org.apache.tuscany.sca.core.scope:org.apache.tuscany.sca.data.collection:org.apache.tuscany.sca.databinding:org.apache.tuscany.sca.databinding.impl:org.apache.tuscany.sca.databinding.javabeans:org.apache.tuscany.sca.databinding.xml:org.apache.tuscany.sca.extensibility:org.apache.tuscany.sca.host.http:org.apache.tuscany.sca.interfacedef:org.apache.tuscany.sca.interfacedef.impl:org.apache.tuscany.sca.interfacedef.util:org.apache.tuscany.sca.interfacedef.wsdl:org.apache.tuscany.sca.invocation:org.apache.tuscany.sca.monitor:org.apache.tuscany.sca.policy:org.apache.tuscany.sca.policy.authentication.token:org.apache.tuscany.sca.policy.security:org.apache.tuscany.sca.policy.util:org.apache.tuscany.sca.provider:org.apache.tuscany.sca.runtime:org.apache.tuscany.sca.web.javascript:org.apache.tuscany.sca.work:org.apache.tuscany.sca.xsd</packages>
                                </group>
                            </groups>  <!-- -->
                        </configuration>
                    </plugin>
              </plugins>
           </build>
        </profile>

        <profile>
            <id>hudson-deploy</id>
            <properties>
                <skipTests>true</skipTests>
                <buildZips>true</buildZips>
            </properties>
            <modules>
                <module>maven/tuscany-maven-plugin</module>
                <module>maven/archetypes</module>
                <module>modules</module>
                <!-- samples need to be included so that the bin distro includes the prebuilt contributions -->
                <module>samples</module>
                <module>distribution/all</module>
            </modules>
           <build>
              <defaultGoal>install</defaultGoal>
           </build>
        </profile>

        <profile>
            <id>base</id>
            <modules>
                <module>modules/assembly</module>
                <module>modules/assembly-xml</module>
                <module>modules/assembly-xsd</module>
                <module>modules/binding-hazelcast-runtime</module>
                <module>modules/binding-sca-runtime</module>
                <module>modules/binding-ws</module>
                <module>modules/binding-ws-wsdlgen</module>
                <module>modules/binding-ws-runtime-jaxws</module>
                <module>modules/binding-ws-runtime-jaxws-ri</module>
                <module>modules/binding-jms</module>
                <module>modules/binding-jms-runtime</module>
                <module>modules/builder</module>
                <module>modules/common-java</module>
                <module>modules/common-xml</module>
                <module>modules/contribution</module>
                <module>modules/core</module>
                <module>modules/core-databinding</module>
                <module>modules/core-spi</module>
                <module>modules/databinding</module>
                <module>modules/databinding-jaxb</module>
                <module>modules/deployment</module>
                <module>modules/domain-node</module>
                <module>modules/domain-hazelcast</module>
                <module>modules/extensibility</module>
                <module>modules/host-http</module>
                <module>modules/host-jetty</module>
                <module>modules/host-webapp</module>
                <module>modules/implementation-java</module>
                <module>modules/implementation-java-runtime</module>
                <module>modules/implementation-web</module>
                <module>modules/implementation-web-runtime</module>
                <module>modules/interface-java</module>
                <module>modules/interface-java-jaxws</module>
                <module>modules/interface-wsdl</module>
                <module>modules/launcher</module>
                <module>modules/monitor</module>
                <module>modules/interface-wsdl</module>
                <module>modules/node-api</module>
                <module>modules/node-impl</module>
                <module>modules/policy-security</module>
                <module>modules/sca-api</module>
                <module>modules/sca-client-impl</module>
                <module>modules/wink</module>
                <module>modules/xsd</module>
                <module>testing/compliance-tests</module>
            </modules>
        </profile>
        <profile>
            <id>jms</id>
            <modules>
                <module>modules/binding-jms</module>
                <module>modules/binding-jms-runtime</module>
                <module>samples/webapps/helloworld-jms</module>
                <module>testing/itest/jms</module>
            </modules>
        </profile>

<!-- END - WHAT ARE THE FOLLOWING PROFILES FOR? -->

        <profile>
           <id>fast</id>
            <modules>
                <module>modules</module>
                <module>samples</module>
                <module>testing/itest</module>
                <module>features</module>
                <module>distribution</module>
                <module>maven/archetypes</module>
                <!-- module>testing/compliance-tests</module -->
            </modules>
           <build>
              <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.5</version>
                    <configuration>
                        <includes>
                            <include>**/*TestCase.java</include>
                        </includes>
                        <reportFormat>brief</reportFormat>
                        <useFile>false</useFile>
                        <forkMode>once</forkMode>
                        <argLine>-ea -Xmx256m</argLine>
                        <parallel>classes</parallel>
                    </configuration>
                </plugin>
              </plugins>
           </build>
        </profile>
    </profiles>
 

    <build>
        <defaultGoal>install</defaultGoal>

        <resources>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
<!--
            <resource>
                <directory>${notice.dir}</directory>
                <targetPath>META-INF</targetPath>
                <filtering>true</filtering>
                <includes>
                    <include>LICENSE</include>
                    <include>NOTICE</include>
                    <include>README</include>
                </includes>
            </resource>
            <resource>
                <directory>${basedir}/META-INF</directory>
                <targetPath>META-INF</targetPath>
                <includes>
                    <include>MANIFEST.MF</include>
                </includes>
            </resource>
            <resource>
                <directory>${basedir}/OSGI-INF</directory>
                <targetPath>OSGI-INF</targetPath>
                <includes>
                    <include>**/*</include>
                </includes>
            </resource>
-->
            <resource>
                <directory>${basedir}</directory>
                <includes>
                    <include>LICENSE</include>
                    <include>NOTICE</include>
                    <include>README</include>
                    <include>META-INF/**/*</include>
                    <include>OSGI-INF/**/*</include>
                </includes>
            </resource>



        </resources>
   <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>1.0</version>
        <executions>
          <execution>
            <id>enforce-plugin-versions</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requirePluginVersions>
                   <unCheckedPluginList>org.apache.tuscany.sca:tuscany-maven-plugin</unCheckedPluginList>
                   <message>Best Practice is to always define released plugin versions!</message>
                   <banLatest>true</banLatest>
                   <banRelease>true</banRelease>
                   <banSnapshots>true</banSnapshots>
                   <phases>clean,deploy,site</phases>
                   <additionalPlugins>
                   </additionalPlugins>
                </requirePluginVersions>
              </rules>
              <fail>false</fail>
            </configuration>
          </execution>
        </executions>
      </plugin>
   </plugins>

        <pluginManagement>
            <plugins>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-clean-plugin</artifactId>
                    <version>2.4</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>2.3</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-site-plugin</artifactId>
                    <version>2.0-beta-7</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>2.4.2</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <version>2.1</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>2.1-beta-1</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-eclipse-plugin</artifactId>
                    <version>2.8</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-archetype-plugin</artifactId>
                    <version>2.0-alpha-5</version>
                </plugin>

                <!-- compiler plugin configuration -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>2.2</version>
                    <configuration>
                        <source>1.6</source>
                        <target>1.6</target>
                        <fork>true</fork>
                        <meminitial>512m</meminitial>
                        <maxmem>1024m</maxmem>
                    </configuration>
                </plugin>

                <!-- surefire plugin configuration -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.4.3</version>
                    <configuration>
                        <includes>
                            <include>**/*TestCase.java</include>
                        </includes>
                        <reportFormat>brief</reportFormat>
<!--
                        <useFile>false</useFile>
                        <forkMode>once</forkMode>
                        <argLine>-ea -Xmx756m -Xms756m -XX:MaxPermSize=512m</argLine>
-->
                    </configuration>
                </plugin>

                <!-- jar plugin configuration -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>2.1</version>
                    <configuration>
                        <archive>
                            <manifestEntries>
                                <Extension-Name>${project.artifactId}</Extension-Name>
                                <Specification-Title>${project.name}</Specification-Title>
                                <Specification-Vendor>The Apache Software Foundation</Specification-Vendor>
                                <Specification-Version>${project.version}</Specification-Version>
                                <Implementation-Title>${project.name}</Implementation-Title>
                                <Implementation-Vendor-Id>org.apache</Implementation-Vendor-Id>
                                <Implementation-Vendor>The Apache Software Foundation</Implementation-Vendor>
                                <Implementation-Version>${project.version}</Implementation-Version>
                            </manifestEntries>
                         </archive>
                    </configuration>
                </plugin>

                <!-- code coverage check plugin configuration -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-clover-plugin</artifactId>
                    <configuration>
                        <jdk>1.6</jdk>
                    </configuration>
                </plugin>

                <!-- ant plugin global configuration -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>1.3</version>

                    <dependencies>
                        <dependency>
                            <groupId>org.apache.ant</groupId>
                            <artifactId>ant-trax</artifactId>
                            <version>1.7.1</version>
                        </dependency>
                        <!-- this JDk dependency is a workaround for Maven bug - http://jira.codehaus.org/browse/MNG-1323  -->
                        <dependency>
                            <groupId>sun.jdk</groupId>
                            <artifactId>tools</artifactId>
                            <version>1.6</version>
                            <scope>system</scope>
                            <systemPath>${tools.jar}</systemPath>
                            <optional>true</optional>
                        </dependency>
                    </dependencies>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-release-plugin</artifactId>
                    <version>2.2.1</version>
                    <configuration>
                        <tagBase>https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/tags</tagBase>
                        <useReleaseProfile>false</useReleaseProfile>
                        <preparationGoals>clean install</preparationGoals>
                        <goals>deploy</goals>
                        <arguments>-Prelease,deploy</arguments>
                        <autoVersionSubmodules>true</autoVersionSubmodules>
                    </configuration>
                </plugin>

            </plugins>
        </pluginManagement>
    </build>

    <reporting>
        <plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-javadoc-plugin</artifactId>
				<version>2.6.1</version>
				<configuration>
					<maxmemory>1024m</maxmemory>
					<tags>
						<tag>
							<name>tuscany.spi.extension.inheritfrom</name>
							<!-- extension spi by inheritance tag for placing in classes /interfaces -->
							<placement>t</placement>
							<head>Provides part of the Tuscany SPI for Extension Developers by specialization of this class/interface
							</head>
						</tag>
						<tag>
							<name>tuscany.spi.extension.asclient</name>
							<!-- extension spi by client access tag for placing in classes / interfaces. The term client here is used
							in the OO design sense of any class that calls the methods of another is a client of the latter -->
							<placement>t</placement>
							<head>Provides part of the Tuscany SPI for Extension Developers by calling methods on this interface/class.</head>
						</tag>
						<tag>
							<name>tuscany.spi.extension</name>
							<!-- extension spi indicator for overviews, packages -->
							<placement>a</placement>
							<head>Elements of the Tuscany SPI for Extension developers are provided.</head>
						</tag>
					</tags>

 
					<groups>
                                                <!-- beware: this group stanza results in a grouping of pages that contains a superset of the spi, until we complete identification and then refactor out non spi code from listed packages-->
						<group>
						  <title>Extension Developer's SPIs (Work in Progress)</title>
                            <packages>
org.apache.tuscany.sca.assembly:org.apache.tuscany.sca.assembly.builder:org.apache.tuscany.sca.assembly.impl:org.apache.tuscany.sca.assembly.xml:org.apache.tuscany.sca.common.http:org.apache.tuscany.sca.common.xml:org.apache.tuscany.sca.common.xml.dom:org.apache.tuscany.sca.common.xml.stax:org.apache.tuscany.sca.context:org.apache.tuscany.sca.contribution:org.apache.tuscany.sca.contribution.namespace:org.apache.tuscany.sca.contribution.processor:org.apache.tuscany.sca.contribution.resolver:org.apache.tuscany.sca.core:org.apache.tuscany.sca.core.assembly:org.apache.tuscany.sca.core.factory:org.apache.tuscany.sca.core.invocation:org.apache.tuscany.sca.core.scope:org.apache.tuscany.sca.data.collection:org.apache.tuscany.sca.databinding:org.apache.tuscany.sca.databinding.impl:org.apache.tuscany.sca.databinding.javabeans:org.apache.tuscany.sca.databinding.xml:org.apache.tuscany.sca.extensibility:org.apache.tuscany.sca.host.http:org.apache.tuscany.sca.interfacedef:org.apache.tuscany.sca.interfacedef.impl:org.apache.tuscany.sca.interfacedef.util:org.apache.tuscany.sca.interfacedef.wsdl:org.apache.tuscany.sca.invocation:org.apache.tuscany.sca.monitor:org.apache.tuscany.sca.policy:org.apache.tuscany.sca.policy.authentication.token:org.apache.tuscany.sca.policy.security:org.apache.tuscany.sca.policy.util:org.apache.tuscany.sca.provider:org.apache.tuscany.sca.runtime:org.apache.tuscany.sca.web.javascript:org.apache.tuscany.sca.work:org.apache.tuscany.sca.xsd</packages> 
						</group>
					</groups>  <!-- -->
				</configuration>
			</plugin>
		</plugins>
    </reporting>

</project>
