<?xml version="1.0" encoding="UTF-8"?>
<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">


    <!--
        The ANTLR Maven artifacts are now released via the Sonotype OSS
        repository, which means that they are synced to Maven central 
        within a few minutes of hitting the release repo for Sonotype.
        To enable this, we inherit from the Sonotype provided parent
        pom. However, we must also configure our .m2/settings.xml to include
        the snapshot and staging server and the sonotype password. This 
        means that only ANTLR developers can released the artifacts, but
        anyone can build locally.
      -->
    <parent>
        <groupId>org.sonatype.oss</groupId>
        <artifactId>oss-parent</artifactId>
        <version>7</version>
    </parent>    
    
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.antlr</groupId>
    <artifactId>antlr-master</artifactId>
    <packaging>pom</packaging>
    <version>3.4</version>
    <name>ANTLR Master build control POM 3.4</name>
    <url>http://maven.apache.org</url>



  <!--
    What version of ANTLR are we building? This sets the
    the version number for all other things that are built
    as part of an ANTLR release, unless they override or
    ignore it. We do this via a properites file for this
    pom.
    -->

  <!--
     This is the master pom for building the ANTLR
     toolset and runtime (Java) at the specific level
     defined above. Hence we specify here the modules that
     this pom will build when we build this pom in certain profiles.
    -->

  <!--
    Make sure that the build is not platform dependent (I.E show that
    all the files in the source tree are in UTF-8 format.
    -->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

        <profiles>
            <profile>
                <id>standard</id>
                <activation>
                    <activeByDefault>true</activeByDefault>
                </activation>
                <modules>
                    <module>runtime/Java</module>
                    <module>tool</module>
                    <module>antlr3-maven-plugin</module>
                    <module>gunit</module>
                    <module>gunit-maven-plugin</module>
                    <module>antlr3-maven-archetype</module>
                </modules>
            </profile>

            <!--
                Activate this profile to build ONLY the Uber jar, which is the
                ANTLR tool and its dependencies (no plugins etc).
                
                mvn -Duber -DskipTests package assembly:assembly
                
              -->
            <profile>
                <id>uber</id>
                <activation>
                    <property>
                        <name>uber</name>
                        <value>true</value>
                    </property>
                </activation>
                <modules>
                    <module>runtime/Java</module>
                    <module>tool</module>
                </modules>
                <build>
                    <plugins>
                        <plugin>

                        <!--

                            Build an uber-jar for the ANTLR Tool that is packaged with all the other dependencies,
                            such as the antlr-runtime and stringtemplate etc. This will be useful
                            for developers, who then do not need to download anything else or
                            remember that they need stringtemplate.jar in their CLASSPATH and so
                            on.

                            This does not preclude any of the module generated jars from
                            being used on their own of course.

                            Here, we also build a master source jar as I was unable to pursuade
                            this plugin to use multiple configurations and not have the thing
                            screw up because of multiple modules :-(

                          -->

                            <artifactId>maven-assembly-plugin</artifactId>
                            <version>2.2.1</version>
                            <!--
                                Do not make the child modules build an assembly
                              -->
                            <inherited>false</inherited>

                            <configuration>
                                <descriptors>
                                    <descriptor>antlrjar.xml</descriptor>
                                    <descriptor>antlrsources.xml</descriptor>
                                </descriptors>
                                    <!--

                                        Specify that we want the resulting jar to be executable
                                        via java -jar, which we do by modifying the manifest
                                        of course.
                                      -->
                                <archive>
                                    <manifest>
                                        <mainClass>org.antlr.Tool</mainClass>
                                    </manifest>
                                </archive>
                            </configuration>

                        </plugin>
                    </plugins>
                </build>
            </profile>
            
            <profile>
                <id>release-sign-artifacts</id>
                <activation>
                    <property>
                        <name>deploy</name>
                        <value>true</value>
                    </property>
                </activation>
                <modules>
                    <module>runtime/Java</module>
                    <module>tool</module>
                    <module>antlr3-maven-plugin</module>
                    <module>gunit</module>
                    <module>gunit-maven-plugin</module>
                    <module>antlr3-maven-archetype</module>
                </modules>
                <build>
                    <plugins>
                        
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-gpg-plugin</artifactId>
                            <version>1.3</version>
                            <executions>
                                <execution>
                                    <id>sign-artifacts</id>
                                    <phase>verify</phase>
                                    <goals>
                                       <goal>sign</goal>
                                    </goals>
                                </execution>
                            </executions>
                        </plugin>
                        
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-javadoc-plugin</artifactId>
                            <version>2.8</version>
                            <executions>
                                <execution>
                                    <id>attach-javadocs</id>
                                    <goals>
                                        <goal>jar</goal>
                                    </goals>
                                </execution>
                            </executions>
                        </plugin>
                        
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-source-plugin</artifactId>
                            <version>2.1.2</version>
                            <executions>
                                <execution>
                                    <id>attach-sources</id>
                                    <goals>
                                       <goal>jar</goal>
                                    </goals>
                                </execution>
                            </executions>
                        </plugin>
                        
                    </plugins>
                </build>
            </profile>
            
    </profiles>

  <!--

    Tell Maven which other artifacts we need in order to
    build, run and test the ANTLR jars.
    This is the master pom, and so it only contains those
    dependencies that are common to all the modules below
    or are just included for test
    -->
    <dependencyManagement>

        <dependencies>

            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.8.2</version>
                <scope>test</scope>
            </dependency>


        </dependencies>

    </dependencyManagement>

    <build>

        <defaultGoal>install</defaultGoal>

        <!--
            The following filter definition means that both the master
            project and the sub projects will read in a file in the same
            directory as the pom.xml is located and set any properties
            that are defined there in the standard x=y format. These
            properties can then be referenced via ${x} in any resource
            file specified in any pom. So, there is a master antlr.config
            file in the same location as this pom.xml file and here you can
            define anything that is relevant to all the modules that we
            build here. However each module also has an antlr.config file
            where you can override property values from the master file or
            define things that are only relevant to that module.
          -->
        <filters>
            <filter>antlr.config</filter>
        </filters>

        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>

        <plugins>

             <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>buildnumber-maven-plugin</artifactId>
                <version>1.0-beta-2</version>
                <configuration>
                  <format>{0,date,MMM dd, yyyy} {0,time,kk:mm:ss}</format>
                  <items>
                    <item>timestamp</item>
                  </items>
                </configuration>
                <executions>
                  <execution>
                    <phase>validate</phase>
                    <goals>
                      <goal>create</goal>
                    </goals>
                  </execution>
                </executions>
             </plugin>

            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.6</source>
                    <target>jsr14</target>
                    <sourceDirectory>src</sourceDirectory>
                </configuration>
            </plugin>

            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.9</version>
            </plugin>

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>findbugs-maven-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <findbugsXmlOutput>true</findbugsXmlOutput>
                    <findbugsXmlWithMessages>true</findbugsXmlWithMessages>
                    <xmlOutput>true</xmlOutput>
                </configuration>
            </plugin>
            
        </plugins>

    </build>
</project>
