<?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>eclipse-plugins-parent</artifactId>
    <version>3.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>
    <name>Geronimo Eclipse Plugin :: Plugins</name>
                
    <parent>
        <groupId>org.apache.geronimo.devtools</groupId>
        <artifactId>geronimo-eclipse-plugin</artifactId>
        <version>3.0.1-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>
	
    <build>
        <plugins>	
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-clean-plugin</artifactId>
                <inherited>false</inherited>
                <configuration>
                    <filesets>
                        <fileset>
                            <directory>${pom.basedir}</directory>
                            <includes>
                                <include>.metadata</include>
                                <include>*.log</include>
                            </includes>
                        </fileset>
                    </filesets>
                </configuration>
            </plugin>
        </plugins>
		
        <pluginManagement>
            <plugins>	
                <plugin>
                    <groupId>org.apache.geronimo.devtools</groupId>
                    <artifactId>maven-eclipsepde-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>initialize</id>
                            <phase>validate</phase>
                            <goals>
                                <goal>manifestbundles</goal>
                                <goal>install</goal>
                            </goals>
                        </execution>
                        <execution>
                            <id>validate-bundle-classpath</id>
                            <phase>process-resources</phase>
                            <goals>
                                <goal>validatemanifest</goal>
                            </goals>
                            <configuration>
                                <classpathEntriesDir>lib</classpathEntriesDir>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
				<plugin>
					<groupId>com.google.code.maven-replacer-plugin</groupId>
					<artifactId>maven-replacer-plugin</artifactId>
					<executions>                
						<execution>
							<phase>prepare-package</phase>
							<goals>
								<goal>replace</goal>
							</goals>
						</execution>
					</executions>
					<configuration>
						<file>META-INF/MANIFEST.MF</file>
						<token>Bundle-Version:.*</token>
						<value>Bundle-Version: ${osgi.pom.version}</value>
						<outputFile>target/classes/META-INF/MANIFEST.MF</outputFile>
					</configuration>
				</plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <configuration>
                        <archive>
                            <manifestFile>${basedir}/target/classes/META-INF/MANIFEST.MF</manifestFile>
                                <manifestEntries>
                                    <Implementation-Version>${osgi.pom.version}</Implementation-Version>
                                </manifestEntries>
                        </archive>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <executions>
                        <!-- workaround for bugzilla 147936 -->
                        <execution>
                            <id>backup</id>
                            <phase>process-sources</phase>
                            <configuration>
                                <tasks>
                                    <copy file="${basedir}/.classpath" todir="${project.build.directory}" overwrite="false" failonerror="false" />
                                    <copy file="${basedir}/.project" todir="${project.build.directory}" overwrite="false" failonerror="false" />
                                    <copy file="${basedir}/.options" todir="${project.build.directory}" overwrite="false" failonerror="false" />
                                </tasks>
                            </configuration>
                            <goals>
                                <goal>run</goal>
                            </goals>
                        </execution>
                        <execution>
                            <id>restore</id>
                            <phase>compile</phase>
                            <configuration>
                                <tasks>
                                    <copy file="${project.build.directory}/.classpath" todir="${basedir}" overwrite="true" failonerror="false" />
                                    <copy file="${project.build.directory}/.project" todir="${basedir}" overwrite="true" failonerror="false" />
                                    <copy file="${project.build.directory}/.options" todir="${basedir}" overwrite="true" failonerror="false" />
                                </tasks>
                            </configuration>
                            <goals>
                                <goal>run</goal>
                            </goals>
                        </execution>
                        <!-- /workaround -->
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-clean-plugin</artifactId>
                    <configuration>
                        <filesets>
                            <fileset>
                                <directory>${pom.basedir}/lib</directory>
                                <includes>
                                    <include>**</include>
                                </includes>
                            </fileset>
                        </filesets>
                    </configuration>
                </plugin>
               <!-- skip deploy child artifacts in release process-->
               <plugin>
                   <artifactId>maven-deploy-plugin</artifactId>             
                   <configuration>
                     <skip>true</skip>
                  </configuration>
               </plugin>
            </plugins>
        </pluginManagement>
    </build>
	
    <modules>
        <module>org.apache.geronimo.jaxbmodel.common</module>
        <module>org.apache.geronimo.jee.v21.jaxbmodel</module>
        <module>org.apache.geronimo.jee.v22.jaxbmodel</module>
        <module>org.apache.geronimo.j2ee.v11.jaxbmodel</module>
        <module>org.apache.geronimo.st.core</module>
        <module>org.apache.geronimo.st.v11.core</module>
        <module>org.apache.geronimo.st.v20.core</module>
        <module>org.apache.geronimo.st.v21.core</module>
        <module>org.apache.geronimo.st.v22.core</module>
        <module>org.apache.geronimo.st.v30.core</module>
        <module>org.apache.geronimo.st.v30.jaxbmodel</module>
        <module>org.apache.geronimo.st.ui</module>
        <module>org.apache.geronimo.st.v11.schemas</module>
        <module>org.apache.geronimo.st.schemas</module>
        <module>org.apache.geronimo.st.v11.ui</module>
        <module>org.apache.geronimo.st.v20.ui</module>
        <module>org.apache.geronimo.st.v21.ui</module>
        <module>org.apache.geronimo.st.v22.ui</module>
        <module>org.apache.geronimo.st.v30.ui</module>
        <module>org.apache.geronimo.runtime.common</module>
        <module>org.apache.geronimo.runtime.v11</module>
        <module>org.apache.geronimo.runtime.v20</module>
        <module>org.apache.geronimo.runtime.v21</module>
        <module>org.apache.geronimo.runtime.v22</module>
        <module>org.apache.geronimo.runtime.v30</module>
    </modules>
</project>
