<?xml version="1.0"?>
<!--
    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 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">

   <parent>
      <groupId>org.apache.struts</groupId>
      <artifactId>struts-master</artifactId>
      <version>4</version>
   </parent>

    <modelVersion>4.0.0</modelVersion>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts-parent</artifactId>
    <version>1.4.0-SNAPSHOT</version>
    <packaging>pom</packaging>
    <name>Struts</name>
    <url>http://struts.apache.org/</url>
    <description>Apache Struts</description>

    <inceptionYear>2000</inceptionYear>

    <scm>
       <connection>scm:svn:http://svn.apache.org/repos/asf/struts/struts1/trunk</connection>
       <developerConnection>scm:svn:https://svn.apache.org/repos/asf/struts/struts1/trunk</developerConnection>
       <url>http://svn.apache.org/viewcvs.cgi/struts/struts1/trunk</url>
    </scm>

    <issueManagement>
        <system>JIRA</system>
        <url>http://issues.apache.org/struts/</url>
    </issueManagement>

    <ciManagement/>

    <distributionManagement>
        <site>
            <id>apache-site</id>
            <url>scp://people.apache.org/www/struts.apache.org/1.x/</url>
        </site>
    </distributionManagement>

    <profiles>
        <profile>
            <id>apps</id>
            <activation>
                <property>
                    <name>apps</name>
                </property>
            </activation>
            <modules>
                <module>apps</module>
            </modules>
        </profile>
        <profile>
            <id>dormant</id>
            <activation>
                <property>
                    <name>dormant</name>
                </property>
            </activation>
            <modules>
                <module>el</module>
                <module>faces</module>
            </modules>
        </profile>
        <profile>
            <id>itest</id>
            <activation>
                <property>
                    <name>itest</name>
                </property>
            </activation>
            <modules>
                <module>integration</module>
            </modules>
        </profile>
        <profile>
            <id>assembly</id>
            <activation>
                <property>
                    <name>assembly</name>
                </property>
            </activation>
            <modules>
                <module>assembly</module>
            </modules>
        </profile>
        <profile>
            <id>release</id>
            <activation>
                <property>
                    <name>release</name>
                </property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>sign-artifacts</id>
                                <phase>verify</phase>
                                <goals>
                                    <goal>sign</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

    <modules>
        <module>core</module>
        <module>extras</module>
        <module>mailreader-dao</module>
        <module>scripting</module>
        <module>taglib</module>
        <module>tiles</module>
        <module>tiles2</module>
    </modules>

    <licenses>
        <license>
            <name>The Apache Software License, Version 2.0</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
            <distribution>repo</distribution>
            <comments/>
        </license>
    </licenses>

    <organization>
        <name>Apache Software Foundation</name>
        <url>http://www.apache.org/</url>
    </organization>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>net.sf.dtddoc</groupId>
                    <artifactId>dtddoc-maven-plugin</artifactId>
                    <version>1.1</version>
                </plugin>
                <plugin>
                    <groupId>net.sourceforge.maven-taglib</groupId>
                    <artifactId>maven-taglib-plugin</artifactId>
                    <version>2.3.1</version>
                    <configuration>
                      <parseHtml>true</parseHtml>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>1.3</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.felix</groupId>
                    <artifactId>maven-bundle-plugin</artifactId>
                    <version>1.4.3</version>
                    <inherited>true</inherited>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>2.0.2</version>
                    <configuration>
                        <source>1.4</source>
                        <target>1.4</target>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>2.2</version>
                    <configuration>
                        <archive>
                            <manifestFile>${struts.manifestfile}</manifestFile>
                            <manifest>
                                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                            </manifest>
                        </archive>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>2.5</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-source-plugin</artifactId>
                    <version>2.0.4</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.4.3</version>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-antrun-plugin</artifactId>
               <inherited>false</inherited>
               <executions>
                  <execution>
                     <id>copy-dtds</id>
                     <phase>site</phase>
                     <configuration>
                        <tasks>
                           <copy todir="${project.build.directory}/site/dtds"
                                 failonerror="false">
                              <fileset dir="${basedir}/core/src/main/resources/org/apache/struts/resources"/>
                              <fileset dir="${basedir}/tiles/src/main/resources/org/apache/struts/resources"/>
                           </copy>
                        </tasks>
                     </configuration>
                     <goals>
                        <goal>run</goal>
                     </goals>
                  </execution>
               </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <configuration>
                    <excludeDependencies>true</excludeDependencies>
                    <manifestLocation>target/osgi</manifestLocation>
                    <instructions>
                        <_nouses>true</_nouses>
                        <Bundle-SymbolicName>${struts.osgi.symbolicName}</Bundle-SymbolicName>
                        <Export-Package>${struts.osgi.export}</Export-Package>
                        <Private-Package>${struts.osgi.private}</Private-Package>
                        <Import-Package>${struts.osgi.import}</Import-Package>
                        <DynamicImport-Package>${struts.osgi.dynamicImport}</DynamicImport-Package>
                        <Bundle-DocURL>${project.url}</Bundle-DocURL>
                    </instructions>
                </configuration>
                <executions>
                    <execution>
                        <id>bundle-manifest</id>
                        <phase>process-classes</phase>
                        <goals>
                            <goal>manifest</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

        </plugins>
        
        <defaultGoal>install</defaultGoal>
        
    </build>

    <reporting>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-project-info-reports-plugin</artifactId>
                <version>2.1</version>
            </plugin>
            <plugin>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>2.5</version>
                <configuration>
                  <aggregate>true</aggregate>
                  <links>
                    <link>http://commons.apache.org/beanutils/api/</link>
                    <link>http://commons.apache.org/logging/apidocs/</link>
                    <link>http://commons.apache.org/validator/apidocs/</link>
                    <link>http://java.sun.com/j2se/1.4.2/docs/api/</link>
                    <link>http://java.sun.com/j2ee/1.4/docs/api/</link>
                  </links>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-report-plugin</artifactId>
                <version>2.4.3</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                  <configLocation>http://svn.apache.org/repos/asf/struts/maven/trunk/build/struts_checks.xml</configLocation>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jxr-plugin</artifactId>
                <version>2.1</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-pmd-plugin</artifactId>
                <version>2.4</version>
            </plugin>
            <plugin>
                <groupId>net.sf.dtddoc</groupId>
                <artifactId>dtddoc-maven-plugin</artifactId>
                <version>1.1</version>
                <configuration>
                    <excludes>
                        <exclude>**/web-app*</exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </reporting>
    
    <properties>
        <myfaces.version>1.0.9</myfaces.version>
        <struts.osgi.symbolicName>org.apache.${artifactId}</struts.osgi.symbolicName>
        <struts.osgi.export>org.apache.struts.*;version=${pom.version}</struts.osgi.export>
        <struts.osgi.import>*</struts.osgi.import>
        <struts.osgi.dynamicImport />
        <struts.osgi.private />
        <struts.manifestfile>target/osgi/MANIFEST.MF</struts.manifestfile>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>antlr</groupId>
                <artifactId>antlr</artifactId>
                <version>2.7.7</version>
            </dependency>
            <dependency>
                <groupId>bsf</groupId>
                <artifactId>bsf</artifactId>
                <version>2.3.0</version>
            </dependency>
            <dependency>
                <groupId>commons-beanutils</groupId>
                <artifactId>commons-beanutils</artifactId>
                <version>1.8.0</version>
            </dependency>
            <dependency>
               <groupId>commons-codec</groupId>
               <artifactId>commons-codec</artifactId>
               <version>1.2</version>
            </dependency>
            <dependency>
                <groupId>commons-chain</groupId>
                <artifactId>commons-chain</artifactId>
                <version>1.2</version>
                <exclusions>
                    <exclusion>
                        <groupId>myfaces</groupId>
                        <artifactId>myfaces-api</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>javax.portlet</groupId>
                        <artifactId>portlet-api</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>commons-collections</groupId>
                <artifactId>commons-collections</artifactId>
                <version>2.1</version>
            </dependency>
            <dependency>
                <groupId>commons-digester</groupId>
                <artifactId>commons-digester</artifactId>
                <version>1.8</version>
            </dependency>
            <dependency>
               <groupId>commons-el</groupId>
               <artifactId>commons-el</artifactId>
               <version>1.0</version>
            </dependency>
            <dependency>
                <groupId>commons-fileupload</groupId>
                <artifactId>commons-fileupload</artifactId>
                <version>1.2.1</version>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
                <version>1.1.1</version>
            </dependency>
            <dependency>
                <groupId>commons-validator</groupId>
                <artifactId>commons-validator</artifactId>
                <version>1.3.1</version>
                <exclusions>
                    <exclusion>
                        <groupId>xml-apis</groupId>
                        <artifactId>xml-apis</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
              <groupId>javax.servlet</groupId>
              <artifactId>jsp-api</artifactId>
              <version>2.0</version>
              <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jstl</artifactId>
                <version>1.0.2</version>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
                <version>2.3</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>3.8.1</version>
                <optional>true</optional>
            </dependency>
            <dependency>
               <groupId>myfaces</groupId>
               <artifactId>myfaces-extensions</artifactId>
               <version>${myfaces.version}</version>
            </dependency>
            <dependency>
               <groupId>myfaces</groupId>
               <artifactId>myfaces-impl</artifactId>
               <version>${myfaces.version}</version>
            </dependency>
            <dependency>
               <groupId>myfaces</groupId>
               <artifactId>myfaces-jsf-api</artifactId>
               <version>${myfaces.version}</version>
            </dependency>
            <dependency>
                <groupId>oro</groupId>
                <artifactId>oro</artifactId>
                <version>2.0.8</version>
            </dependency>
            <dependency>
              <groupId>taglibs</groupId>
              <artifactId>standard</artifactId>
              <version>1.0.6</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <repositories>
        <repository>
            <id>apache.snapshots</id>
            <name>Apache Maven Repository (Snapshots and Test Builds)</name>
            <url>http://people.apache.org/maven-snapshot-repository</url>
            <releases><enabled>false</enabled></releases>
            <snapshots><enabled>true</enabled></snapshots>
        </repository>
    </repositories>

</project>
