<!--
  ~ Copyright 2016-present Open Networking Laboratory
  ~
  ~ Licensed 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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.onosproject</groupId>
        <artifactId>onos-yang-compiler-base</artifactId>
        <version>1.12-SNAPSHOT</version>
    </parent>

    <artifactId>onos-yang-compiler-parser</artifactId>
    <version>1.12-SNAPSHOT</version>
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>org.onosproject</groupId>
            <artifactId>onos-yang-compiler-datamodel</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.onosproject</groupId>
            <artifactId>onos-yang-compiler-translator</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.onosproject</groupId>
            <artifactId>onos-yang-compiler-linker</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.antlr</groupId>
            <artifactId>antlr4-runtime</artifactId>
            <version>4.5.3</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.antlr</groupId>
                <artifactId>antlr4-maven-plugin</artifactId>
                <version>4.5</version>
                <executions>
                    <execution>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>antlr4</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <sourceDirectory>src/main/resources</sourceDirectory>
                    <outputDirectory>
                        target/generated-sources/org/onosproject/yang/compiler/parser/antlrgencode
                    </outputDirectory>
                    <visitor>false</visitor>
                    <listener>true</listener>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-clean-plugin</artifactId>
                <version>3.0.0</version>
                <executions>
                    <execution>
                        <id>Deleting auto-generated listener interfaces</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>clean</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <excludeDefaultDirectories>true</excludeDefaultDirectories>
                    <filesets>
                        <fileset>
                            <directory>target</directory>
                            <followSymlinks>false</followSymlinks>
                            <useDefaultExcludes>true</useDefaultExcludes>
                            <excludes>
                                <exclude>
                                    **/generated-sources/org/onosproject/yang/compiler/parser/antlrgencode/GeneratedYangLexer.java
                                </exclude>
                                <exclude>
                                    **/generated-sources/org/onosproject/yang/compiler/parser/antlrgencode/GeneratedYang.tokens
                                </exclude>
                                <exclude>
                                    **/generated-sources/org/onosproject/yang/compiler/parser/antlrgencode/GeneratedYangParser.java
                                </exclude>
                                <exclude>
                                    **/generated-sources/org/onosproject/yang/compiler/parser/antlrgencode/GeneratedYangLexer.tokens
                                </exclude>
                                <exclude>
                                    **/generated-sources/org/onosproject/yang/compiler/parser/antlrgencode/YangLexer.java
                                </exclude>
                                <exclude>
                                    **/generated-sources/org/onosproject/yang/compiler/parser/antlrgencode/YangLexer.tokens
                                </exclude>
                            </excludes>
                        </fileset>
                    </filesets>
                    <verbose>false</verbose>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.0.2</version>
                <configuration>
                    <skipIfEmpty>true</skipIfEmpty>
                </configuration>
                <executions>
                    <execution>
                        <id>default</id>
                        <goals>
                            <goal>test-jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
