<?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.
  -->
<!-- $Rev$ $Date$ -->
<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.geronimo.devtools</groupId>
    <artifactId>geronimo-eclipse-plugin</artifactId>
    <version>3.0.1</version>
    <packaging>pom</packaging>
    <name>Geronimo Eclipse Plugin</name>
                        
    <parent>
      <groupId>org.apache</groupId>
      <artifactId>apache</artifactId>
      <version>6</version>
    </parent>
                        
    <description>Apache Geronimo Eclipse Plugin and WTP Server Adapter</description>
    <url>http://geronimo.apache.org/devtools</url>
                        
    <prerequisites>
        <maven>2.2.1</maven>
    </prerequisites>
                        
    <issueManagement>
        <system>jira</system>
        <url>http://issues.apache.org/jira/browse/GERONIMODEVTOOLS</url>
    </issueManagement>
                        
    <mailingLists>
        <mailingList>
            <name>Geronimo User List</name>
            <subscribe>users-subscribe@geronimo.apache.org</subscribe>
            <unsubscribe>users-unsubscribe@geronimo.apache.org</unsubscribe>
            <archive>http://mail-archives.apache.org/mod_mbox/geronimo-user/</archive>
        </mailingList>
        <mailingList>
            <name>Geronimo Developer List</name>
            <subscribe>dev-subscribe@geronimo.apache.org</subscribe>
            <unsubscribe>dev-unsubscribe@geronimo.apache.org</unsubscribe>
            <archive>http://mail-archives.apache.org/mod_mbox/geronimo-dev/</archive>
        </mailingList>
        <mailingList>
            <name>Source Control List</name>
            <subscribe>scm-subscribe@geronimo.apache.org</subscribe>
            <unsubscribe>scm-unsubscribe@geronimo.apache.org</unsubscribe>
            <archive>http://mail-archives.apache.org/mod_mbox/geronimo-scm/</archive>
        </mailingList>
    </mailingLists>
                        
    <scm>
        <connection>scm:svn:https://svn.apache.org/repos/asf/geronimo/devtools/eclipse-plugin/tags/geronimo-eclipse-plugin-3.0.1</connection>
        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/geronimo/devtools/eclipse-plugin/tags/geronimo-eclipse-plugin-3.0.1</developerConnection>
        <url>https://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/tags/geronimo-eclipse-plugin-3.0.1</url>
    </scm>
                        
    <organization>
        <name>Geronimo</name>
        <url>http://geronimo.apache.org/</url>
    </organization>
                        
    <distributionManagement>
        <site>
            <id>geronimo-website</id>
            <url>scp://people.apache.org/www/geronimo.apache.org/maven/devtools/eclipse-plugin</url>
        </site>
    </distributionManagement>
                        
    <properties>
        <eclipseDownload>${settings.localRepository}/eclipse-downloads</eclipseDownload>
        <eclipseInstall>${settings.localRepository}/eclipse</eclipseInstall>
        <keystoreAlias>devtools</keystoreAlias> 
        <keystoreFile>keystore</keystoreFile> 
        <keystoreDname>CN=http://geronimo.apache.org,OU=Geronimo,O=Apache,L=Geronimo,S=Apache,C=US</keystoreDname> 
        <keystoreKeypass>devtools</keystoreKeypass> 
        <keystoreStorepass>geronimo</keystoreStorepass> 
        <keystoreValDays>3650</keystoreValDays>
        <osgi.pom.version>${gep.osgiVersion}</osgi.pom.version>
    </properties>
                        
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.5</version>
                <scope>compile</scope>
            </dependency>
                        
            <dependency>
                <groupId>org.apache.geronimo.specs</groupId>
                <artifactId>geronimo-jaxb_2.2_spec</artifactId>
                <version>1.0.1</version>
            </dependency>
                        
            <dependency>
                <groupId>com.sun.xml.bind</groupId>
                <artifactId>jaxb-xjc</artifactId>
                <version>2.2.3-1</version>
            </dependency>
                        
            <dependency>
                <groupId>org.apache.geronimo.bundles</groupId>
                <artifactId>jaxb-impl</artifactId>
                <version>2.2.3-1_1</version>               
            </dependency>
                        
            <dependency>
                <groupId>org.codehaus.plexus</groupId>
                <artifactId>plexus-archiver</artifactId>
                <version>1.0-alpha-12</version>
            </dependency>
                        
            <dependency>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
                <version>1.1.1</version>
            </dependency>
                        
            <dependency>
                <groupId>cglib</groupId>
                <artifactId>cglib-nodep</artifactId>
                <version>2.2</version>
            </dependency>
                        
            <dependency>
                <groupId>org.apache.geronimo.specs</groupId>
                <artifactId>geronimo-activation_1.1_spec</artifactId>
                <version>1.1</version>
            </dependency>
                        
            <dependency>
                <groupId>org.apache.geronimo.specs</groupId>
                <artifactId>geronimo-javaee-deployment_1.1MR3_spec</artifactId>
                <version>1.0.1</version>
            </dependency>
                        
            <dependency>
                <groupId>org.apache.geronimo.specs</groupId>
                <artifactId>geronimo-stax-api_1.2_spec</artifactId>
                <version>1.1</version>
            </dependency>

            <dependency>
                <groupId>xmlunit</groupId>
                <artifactId>xmlunit</artifactId>
                <version>1.3</version>
                <scope>test</scope>
            </dependency>

            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>1.6.0</version>
            </dependency>

            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-simple</artifactId>
                <version>1.6.1</version>
            </dependency>

            <dependency>
                <groupId>abbot</groupId>
                <artifactId>abbot.swt</artifactId>
                <version>0.1.0.20080305_1254</version>
            </dependency>

            <dependency>
                <groupId>abbot</groupId>
                <artifactId>abbot.swt.eclipse</artifactId>
                <version>0.1.0.20080305_1254</version>
            </dependency>
             
            <dependency>
                <groupId>org.openqa.selenium.client-drivers</groupId>
                <artifactId>selenium-java-client-driver</artifactId>
                <version>1.0.2</version>
            </dependency>
            
            <dependency>
                <groupId>org.openqa.selenium.server</groupId>
                <artifactId>selenium-server</artifactId>
                <version>1.0.3</version>
            </dependency>
             
            <dependency>
                <groupId>org.openqa.selenium.core</groupId>
                <artifactId>selenium-core</artifactId>
                <version>1.0-beta-1</version>
            </dependency>

            <dependency>
                <groupId>org.osgi</groupId>
                <artifactId>org.osgi.core</artifactId>
                <version>4.3.0</version>
            </dependency>

            <dependency>
                <groupId>org.osgi</groupId>
                <artifactId>org.osgi.compendium</artifactId>
                <version>4.2.0</version>
            </dependency>

        </dependencies>
    </dependencyManagement>
                        
    <build>
        <defaultGoal>install</defaultGoal>
        <sourceDirectory>src/main/</sourceDirectory>
                        
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>1.3</version>
                    <dependencies>
                        <dependency>
                            <groupId>oro</groupId>
                            <artifactId>oro</artifactId>
                            <version>2.0.8</version>
                        </dependency>
                        <dependency>
                            <groupId>ant</groupId>
                            <artifactId>ant-apache-oro</artifactId>
                            <version>1.6.4</version>
                        </dependency>
                        <dependency>
                            <groupId>ant</groupId>
                            <artifactId>ant-optional</artifactId>
                            <version>1.5.3-1</version>
                        </dependency>
                        <dependency>
                            <groupId>ant-contrib</groupId>
                            <artifactId>ant-contrib</artifactId>
                            <version>1.0b3</version>
                            <exclusions>
                                <exclusion>
                                    <groupId>ant</groupId>
                                    <artifactId>ant</artifactId>
                                </exclusion>
                            </exclusions>
                        </dependency>
                    </dependencies>
                </plugin>
                
                <plugin>
                    <groupId>org.apache.geronimo.devtools</groupId>
                    <artifactId>maven-eclipsepde-plugin</artifactId>
                    <version>1.2</version>
                    <configuration>
                        <eclipseHome>${settings.localRepository}/eclipse/eclipse/</eclipseHome>
                    </configuration>
                </plugin>
                
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>2.2-beta-4</version>
                </plugin>
				
                <plugin>
                    <!-- Using the plugin to replace the content when processing the sources or resources -->
                    <groupId>com.google.code.maven-replacer-plugin</groupId>
                    <artifactId>maven-replacer-plugin</artifactId>
                    <version>1.4.1</version>
                </plugin>
				
                <plugin>
                   <groupId>com.sun.tools.xjc.maven2</groupId>
                   <artifactId>maven-jaxb-plugin</artifactId>
                   <version>1.1</version>
                </plugin>
                
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.4.3</version>
                    <configuration>
                        <redirectTestOutputToFile>true</redirectTestOutputToFile>
                    </configuration>
                </plugin>

                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>keytool-maven-plugin</artifactId>
                    <version>1.0</version>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-release-plugin</artifactId>
                    <version>2.3.2</version>
                   <configuration>
                        <useReleaseProfile>false</useReleaseProfile> 
                        <allowTimestampedSnapshots>false</allowTimestampedSnapshots>
                        <preparationGoals>clean install</preparationGoals>
                        <goals>deploy</goals>
                        <autoVersionSubmodules>true</autoVersionSubmodules>
                    </configuration>
                </plugin>

                <!-- skip javadoc generation during release:prepare, which is a built-in process from org.apache 6 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>2.5</version>
                    <configuration>
                        <skip>true</skip>
                    </configuration>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-remote-resources-plugin</artifactId>
                    <version>1.1</version>
                </plugin>

                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>rat-maven-plugin</artifactId>
                    <version>1.0-alpha-3</version>
                    <configuration>
                        <excludes>
                            <exclude>**/MANIFEST.MF</exclude>
                            <exclude>**/.classpath</exclude>
                            <exclude>**/.options</exclude>
                            <exclude>**/.project</exclude>
                            <exclude>**/velocity.log</exclude>
                            <exclude>**/PLUGIN_RELEASE-NOTES*.txt</exclude>
                            <exclude>**/target/**</exclude>
                        </excludes>
                    </configuration>
                </plugin>                      
           </plugins>

        </pluginManagement>
                
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.0.2</version>
                <configuration>
                    <source>1.5</source>
                    <target>1.5</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-clean-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <filesets>
                        <fileset>
                            <directory>${pom.basedir}</directory>
                            <includes>
                                <include>*.log</include>
                                <include>keystore</include>
                            </includes>
                        </fileset>
                    </filesets>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.2</version>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <version>1.7</version>
                <executions>
                    <execution>
                        <id>parse-version</id>
                            <configuration>
                                <propertyPrefix>gep</propertyPrefix>
                            </configuration>
                            <goals>
                                <goal>parse-version</goal>
                            </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>keytool-maven-plugin</artifactId>
                <inherited>false</inherited>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>clean</goal>
                            <goal>genkey</goal>
                       </goals>
                    </execution>
                </executions>
                <configuration>
                    <alias>${keystoreAlias}</alias>
                    <keystore>${keystoreFile}</keystore>
                    <dname>${keystoreDname}</dname>
                    <keypass>${keystoreKeypass}</keypass>
                    <storepass>${keystoreStorepass}</storepass>
                    <validity>${keystoreValDays}</validity>
                </configuration>
            </plugin>
            <!-- set attached as false to disable the automatic copy of LICNESE/NOTICE/DEPENDENCIES files -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-remote-resources-plugin</artifactId>
                <executions>
                    <execution>						
                        <configuration>							
                            <attached>false</attached>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
                        
    <repositories>
        <repository>
            <id>codehaus-snapshots</id>
            <name>Codehaus Snapshots Repository</name>
            <url>http://snapshots.repository.codehaus.org</url>
            <layout>default</layout>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>daily</updatePolicy>
                <checksumPolicy>ignore</checksumPolicy>
            </snapshots>
            <releases>
                <enabled>false</enabled>
            </releases>
        </repository>
  
        <!--
         |
         | Added for Selenium artifacts (and is the same repo used by the server)
         |
         -->
        <repository>
            <id>releases.openqa.org</id>
            <name>Openqa Release Repository</name>
            <url>http://archiva.openqa.org/repository/releases</url>
            <layout>default</layout>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <releases>
                <enabled>true</enabled>
            </releases>
        </repository>
        <repository>
            <id>snapshots.openqa.org</id>
            <name>Openqa Snapshot Repository</name>
            <url>http://archiva.openqa.org/repository/snapshots</url>
            <layout>default</layout>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>daily</updatePolicy>
                <checksumPolicy>ignore</checksumPolicy>
            </snapshots>
            <releases>
                <enabled>false</enabled>
            </releases>
        </repository>
    </repositories>
                        
    <pluginRepositories>
        <!--
         |
         | Added for maven-jaxb-plugin artifact (and is the same repo used by the server)
         |
         -->
        <pluginRepository>
            <id>java.net</id>
            <name>java.net Maven Repository</name>
            <url>http://download.java.net/maven/1/</url>
            <layout>legacy</layout>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <releases>
                <enabled>true</enabled>
            </releases>
        </pluginRepository>
        <!--
         |
         | Added for maven-eclipsepde-plugin 1.2-SNAPSHOT
         |
         -->
        <pluginRepository>
            <id>apache.snapshots</id>
            <name>Apache Snapshot Repository</name>
            <url>http://repository.apache.org/snapshots</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>
                        
    <profiles>
        <profile>
            <id>default</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <modules>
                <module>eclipse</module>
                <module>plugins</module>
                <module>features</module>
                <module>assembly</module>
            </modules>
        </profile>
		
        <profile>
            <id>buildWithTimestamp</id>
            <properties>
                <osgi.pom.version>${gep.majorVersion}.${gep.minorVersion}.${gep.incrementalVersion}.v${geronimo-eclipse-plugin.buildNumber}</osgi.pom.version>
            </properties>

            <build>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>buildnumber-maven-plugin</artifactId>
                        <version>1.0-beta-4</version>
                        <configuration>
                            <buildNumberPropertyName>${project.artifactId}.buildNumber</buildNumberPropertyName>
                            <getRevisionOnlyOnce>true</getRevisionOnlyOnce>
                            <format>{0,date,yyyyMMdd-HHmmss}</format>
                            <items>
                                <item>timestamp</item>
                            </items>
                        </configuration>
                        <executions>
                            <execution>
                                <phase>validate</phase>
                                <goals>
                                    <goal>create</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>

            <modules>
                <module>eclipse</module>
                <module>plugins</module>
                <module>features</module>
                <module>assembly</module>
            </modules>
        </profile>
		
        <profile>
            <id>testsuite</id>
            <modules>
                <module>eclipse</module>
                <module>plugins</module>
                <module>features</module>
                <module>assembly</module>
                <module>testsuite</module>
            </modules>
        </profile>

        <profile>
            <id>no-eclipse-downloads</id>
            <modules>
                <module>plugins</module>
                <module>features</module>
                <module>assembly</module>
            </modules>
        </profile>
            
         <!-- this profile is copied from genesis-default-flava and genesis 2.0  -->
         <profile>
            <id>apache-release</id>
            <activation>
                <property>
                   <name>apache-release</name>
                </property>
            </activation>
            <build>
            <plugins>
                <!-- waiting for release -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <inherited>false</inherited>
                    <executions>
                        <execution>
                            <goals>
                             <goal>single</goal>
                            </goals>
                            <phase>package</phase>
                            <configuration>
                                <runOnlyAtExecutionRoot>false</runOnlyAtExecutionRoot>
                                <descriptorRefs>
                                    <descriptorRef>source-release</descriptorRef>
                                </descriptorRefs>
                            </configuration>
                        </execution>
                    </executions>
                    <dependencies>
                        <dependency>
                            <!-- apache version not yet released -->
                            <!--<groupId>org.apache</groupId>-->
                            <groupId>org.apache.geronimo.genesis</groupId>
                            <artifactId>apache-source-release-assembly-descriptor</artifactId>
                            <!-- apache version not yet known -->
                            <version>2.0</version>
                        </dependency>
                    </dependencies>
                </plugin>

                <plugin>
                    <groupId>org.apache.geronimo.genesis</groupId>
                    <artifactId>genesis-maven-plugin</artifactId>
                    <executions>
                        <execution>
                            <goals>
                              <goal>validate-release-configuration</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
            </build>
         </profile>
        
    </profiles>
                        
</project>
