<?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">

    <parent>
        <groupId>org.sonatype.oss</groupId>
        <artifactId>oss-parent</artifactId>
        <version>9</version>
    </parent>

    <prerequisites>
        <maven>3.8</maven>
    </prerequisites>

    <modelVersion>4.0.0</modelVersion>
    <groupId>org.antlr</groupId>
    <artifactId>antlr-master</artifactId>
    <packaging>pom</packaging>
    <version>3.5.3</version>
    <name>ANTLR 3 Master build control POM</name>
    <description>Master build POM for ANTLR 3</description>
    <url>http://antlr.org</url>
    <inceptionYear>1992</inceptionYear>
    <organization>
        <name>ANTLR</name>
        <url>http://www.antlr.org</url>
    </organization>

  <!--
    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
    -->

    <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>
        <module>antlr-complete</module>
    </modules>

  <!--
    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>
        <jdk>1.8</jdk>
        <junit.version>4.13</junit.version>
        <st4.version>4.3.1</st4.version>
        <antlr.version>2.7.7</antlr.version>
        <stringtemplate.version>3.2.1</stringtemplate.version>
        <required-maven-version>3.3.1</required-maven-version>
        <mavenVersion>3.8.4</mavenVersion>
    </properties>

    <licenses>
        <license>
            <name>BSD licence</name>
            <url>http://antlr.org/license.html</url>
            <distribution>repo</distribution>
        </license>
    </licenses>

    <issueManagement>
        <system>GitHub Issues</system>
        <url>https://github.com/antlr/antlr3/issues</url>
    </issueManagement>

    <mailingLists>
        <mailingList>
            <name>antlr-discussion</name>
            <archive>https://groups.google.com/forum/?fromgroups#!forum/antlr-discussion</archive>
        </mailingList>
    </mailingLists>

    <scm>
        <url>https://github.com/antlr/antlr3/tree/master</url>
        <connection>scm:git:git://github.com/antlr/antlr3.git</connection>
        <developerConnection>scm:git:git@github.com:antlr/antlr3.git</developerConnection>
      <tag>HEAD</tag>
  </scm>
  <!--

    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>${junit.version}</version>
                <scope>test</scope>
            </dependency>

            <dependency>
                <groupId>antlr</groupId>
                <artifactId>antlr</artifactId>
                <version>${antlr.version}</version>
                <scope>compile</scope>
            </dependency>

            <dependency>
              <groupId>org.antlr</groupId>
              <artifactId>stringtemplate</artifactId>
              <version>${stringtemplate.version}</version>
              <scope>compile</scope>
            </dependency>

            <dependency>
                <groupId>org.antlr</groupId>
                <artifactId>ST4</artifactId>
                <version>${st4.version}</version>
                <scope>compile</scope>
            </dependency>

        </dependencies>

    </dependencyManagement>

    <profiles>
        <profile>
            <id>sonatype-oss-release</id>
            <modules>
                <module>antlr-complete</module>
            </modules>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <version>3.8.1</version>
                        <configuration>
                            <source>${jdk}</source>
                            <target>${jdk}</target>
                        </configuration>
                    </plugin>
                    <!--
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>default-compile</id>
                                <configuration>
                                    <source>${jdk}</source>
                                    <target>${jdk}</target>
                                    <compilerArgs>
                                        <arg>-Xlint</arg>
                                        <arg>-Xlint:-serial</arg>
                                        <arg>-bootclasspath</arg>
                                        <arg>${bootclasspath.compile}</arg>
                                    </compilerArgs>
                                </configuration>
                            </execution>
                            <execution>
                                <id>default-testCompile</id>
                                <configuration>
                                    <source>${jdk}</source>
                                    <target>${jdk}</target>
                                    <compilerArgs>
                                        <arg>-Xlint</arg>
                                        <arg>-Xlint:-serial</arg>
                                        <arg>-bootclasspath</arg>
                                        <arg>${bootclasspath.testCompile}</arg>
                                    </compilerArgs>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    -->
                </plugins>
            </build>
        </profile>
    </profiles>

    <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.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <archive>
                        <manifest>
                            <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>${jdk}</source>
                    <target>${jdk}</target>
                </configuration>
            </plugin>


            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.12.4</version>
            </plugin>

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>findbugs-maven-plugin</artifactId>
                <!-- override the version inherited from the parent -->
                <version>2.5.3</version>
                <configuration>
                    <findbugsXmlOutput>true</findbugsXmlOutput>
                    <xmlOutput>true</xmlOutput>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <!-- override the version inherited from the parent -->
                <version>2.2.1</version>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-gpg-plugin</artifactId>
                <!-- override the version inherited from the parent -->
                <version>1.5</version>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <version>3.0.0-M2</version>
                <executions>
                    <execution>
                        <id>enforce-maven</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <requireMavenVersion>
                                    <version>${required-maven-version}</version>
                                </requireMavenVersion>
                            </rules>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>

        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

</project>
