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

    <modelVersion>4.0.0</modelVersion>
    <artifactId>gene-id-mapper</artifactId>
    <packaging>jar</packaging>
    <name>Gene ID Mapper</name>
    <description>Mapper to find database entries of gene entity mentions.</description>

    <parent>
        <groupId>de.julielab</groupId>
        <artifactId>julielab-gene-mapper</artifactId>
        <version>2.5.0</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

    <repositories>
        <!-- For LexAccess tool -->
        <repository>
            <id>clojars</id>
            <name>Clojars Repo</name>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <url>http://clojars.org/repo/</url>
        </repository>
        <!-- For BioLemmatizer -->
        <repository>
            <id>bionlp-sourceforge</id>
            <url>https://svn.code.sf.net/p/bionlp/code/repo</url>
        </repository>
        <!-- This repo makes available the MorphAdorner dependency -->
        <repository>
            <id>maven.aksw.internal</id>
            <name>AKSW Internal Release Repository</name>
            <url>https://maven.aksw.org/repository/internal</url>
        </repository>
    </repositories>

    <dependencies>
        <dependency>
            <groupId>de.julielab</groupId>
            <artifactId>gene-species-assignment</artifactId>
            <version>1.0.0</version>
        </dependency>
        <dependency>
            <groupId>de.julielab</groupId>
            <artifactId>gene-candidate-retrieval</artifactId>
            <version>2.5.0</version>
        </dependency>
        <dependency>
            <groupId>com.google.inject</groupId>
            <artifactId>guice</artifactId>
            <version>5.0.1</version>
        </dependency>
        <dependency>
            <groupId>com.google.inject.extensions</groupId>
            <artifactId>guice-testlib</artifactId>
            <version>5.0.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>de.julielab</groupId>
            <artifactId>java-stdio-ipc</artifactId>
            <version>1.0.3</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.9</version>
        </dependency>
        <dependency>
            <groupId>edu.ucdenver.ccp</groupId>
            <artifactId>biolemmatizer-core</artifactId>
            <version>1.2</version>
        </dependency>

        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-core</artifactId>
        </dependency>


        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.assertj</groupId>
            <artifactId>assertj-core</artifactId>
        </dependency>

        <dependency>
            <groupId>stax</groupId>
            <artifactId>stax</artifactId>
            <version>1.2.0</version>
        </dependency>

        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>${guava-version}</version>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-params</artifactId>
        </dependency>
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-launcher</artifactId>
            <version>1.6.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-core</artifactId>
            <version>3.11.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.fulmicoton</groupId>
            <artifactId>multiregexp</artifactId>
            <version>0.3</version>
        </dependency>

        <!-- TODO remove when gene-ne exp base is used as dependency -->
        <dependency>
            <groupId>tw.edu.ntu.csie</groupId>
            <artifactId>libsvm</artifactId>
            <version>3.24</version>
        </dependency>
        <dependency>
            <groupId>de.julielab</groupId>
            <artifactId>jcore-types</artifactId>
            <version>2.6.0</version>
        </dependency>
        <dependency>
            <groupId>de.julielab</groupId>
            <artifactId>jcore-xmi-splitter</artifactId>
            <version>2.4.0</version>
        </dependency>
        <dependency>
            <groupId>de.julielab</groupId>
            <artifactId>jcore-mallet-2.0.9</artifactId>
            <version>2.1.0</version>
            <exclusions>
                <exclusion>
                    <groupId>junit</groupId>
                    <artifactId>junit</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.jdom</groupId>
                    <artifactId>jdom</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>de.julielab</groupId>
            <artifactId>jcore-utilities</artifactId>
            <version>${jcore-utilities-version}</version>
        </dependency>
        <dependency>
            <groupId>de.julielab</groupId>
            <artifactId>julielab-entity-evaluator</artifactId>
            <version>1.3.0</version>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.commons</groupId>
                    <artifactId>commons-io</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- Commented out because it uses another MALLET version -->
        <!--<dependency>-->
        <!--<groupId>de.julielab</groupId>-->
        <!--<artifactId>jcore-jsbd-ae-biomedical-english</artifactId>-->
        <!--<version>2.3.0-SNAPSHOT</version>-->
        <!--<scope>provided</scope>-->
        <!--</dependency>-->
        <dependency>
            <groupId>de.julielab</groupId>
            <artifactId>julielab-java-utilities</artifactId>
            <version>1.4.4</version>
        </dependency>
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-analyzers-common</artifactId>
        </dependency>
        <!--<dependency>-->
        <!--<groupId>gov.nih.nlm.nls.lexaccess</groupId>-->
        <!--<artifactId>lexaccess-dist</artifactId>-->
        <!--<version>2013</version>-->
        <!--</dependency>-->
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-suggest</artifactId>
            <version>${lucene-version}</version>
        </dependency>

        <!--<dependency>-->
        <!--<groupId>net.sf.extjwnl</groupId>-->
        <!--<artifactId>extjwnl</artifactId>-->
        <!--<version>1.9.2</version>-->
        <!--</dependency>-->
        <!--<dependency>-->
        <!--<groupId>net.sf.extjwnl</groupId>-->
        <!--<artifactId>extjwnl-data-wn31</artifactId>-->
        <!--<version>1.2</version>-->
        <!--</dependency>-->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>
        <!--<dependency>-->
        <!--<groupId>de.julielab</groupId>-->
        <!--<artifactId>julielab-embeddings-client</artifactId>-->
        <!--<version>1.1.0-SNAPSHOT</version>-->
        <!--</dependency>-->
        <dependency>
            <groupId>de.julielab</groupId>
            <artifactId>julie-xml-tools</artifactId>
        </dependency>
        <dependency>
            <groupId>de.julielab</groupId>
            <artifactId>jcore-descriptor-creator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.uima</groupId>
            <artifactId>ruta-core</artifactId>
            <version>2.8.1</version>
        </dependency>
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.13</version>
        </dependency>
        <dependency>
            <groupId>com.sparkjava</groupId>
            <artifactId>spark-core</artifactId>
            <version>2.7.1</version>
        </dependency>
        <dependency>
            <groupId>de.julielab</groupId>
            <artifactId>julielab-ranklib-mallet</artifactId>
            <version>1.0.0</version>
            <exclusions>
                <exclusion>
                    <groupId>cc.mallet</groupId>
                    <artifactId>mallet</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>de.julielab</groupId>
            <artifactId>julielab-smac-utilities</artifactId>
            <version>1.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.ehcache</groupId>
            <artifactId>ehcache</artifactId>
            <version>3.8.1</version>
        </dependency>
        <dependency>
            <groupId>javax.cache</groupId>
            <artifactId>cache-api</artifactId>
            <version>1.1.1</version>
        </dependency>
        <dependency>
            <groupId>org.jetbrains</groupId>
            <artifactId>annotations</artifactId>
            <version>RELEASE</version>
            <scope>compile</scope>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>3.1.2</version>
                <executions>
                    <execution>
                        <phase>compile</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.0</version>
                <configuration>
                    <excludes>
                        <exclude>org/apache/uima/ruta/type/*.java</exclude>
                    </excludes>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.2.0</version>
                <configuration>
                    <!-- exclude logback.xml -->
                    <excludes>
                        <exclude>**/logback.xml</exclude>
                    </excludes>
                </configuration>
            </plugin>
            <plugin>
                <!-- To create the descriptors and type systems for the RUTA-based components, put the RUTA script
                in src/main/resources/de/julielab/jcore/ae/genemapper/desc and mvn build the project -->
                <groupId>org.apache.uima</groupId>
                <artifactId>ruta-maven-plugin</artifactId>
                <version>2.8.1</version>
                <configuration>

                    <!-- The directory where the generated type system descriptors will
                     be written stored. -->
                    <!-- default value: ${project.build.directory}/generated-sources/
                      ruta/descriptor -->
                    <typeSystemOutputDirectory>${project.build.directory}/classes</typeSystemOutputDirectory>

                    <!-- The directory where the generated analysis engine descriptors will
                     be stored. -->
                    <!-- default value: ${project.build.directory}/generated-sources/ruta/
                      descriptor -->
                    <analysisEngineOutputDirectory>${project.build.directory}/classes</analysisEngineOutputDirectory>

                    <!-- The template descriptor for the generated type system.
                     By default the descriptor of the maven dependency is loaded. -->
                    <!-- default value: none -->
                    <!-- not used in this example <typeSystemTemplate>...
                      </typeSystemTemplate> -->

                    <!-- The template descriptor for the generated analysis engine.
                      By default the descriptor of the maven dependency is loaded. -->
                    <!-- default value: none -->
                    <!-- not used in this example <analysisEngineTemplate>... -->
                    <analysisEngineTemplate>src/main/resources/ruta/RutaAETemplateDescriptor.xml
                    </analysisEngineTemplate>

                    <!-- Script paths of the generated analysis engine descriptor. -->
                    <!-- default value: none -->
                    <scriptPaths>
                        <scriptPath>/</scriptPath>
                    </scriptPaths>

                    <!-- Descriptor paths of the generated analysis engine descriptor. -->
                    <!-- default value: none -->
                    <descriptorPaths>
                        <descriptorPath>/</descriptorPath>
                    </descriptorPaths>

                    <!-- Resource paths of the generated analysis engine descriptor. -->
                    <!-- default value: none -->
                    <resourcePaths>
                        <resourcePath>resources/ruta</resourcePath>
                    </resourcePaths>

                    <!-- Suffix used for the generated type system descriptors. -->
                    <!-- default value: Engine -->
                    <analysisEngineSuffix>Engine</analysisEngineSuffix>

                    <!-- Suffix used for the generated analysis engine descriptors. -->
                    <!-- default value: TypeSystem -->
                    <typeSystemSuffix>TypeSystem</typeSystemSuffix>

                    <!-- Source file encoding. -->
                    <!-- default value: ${project.build.sourceEncoding} -->
                    <encoding>UTF-8</encoding>

                    <!-- Type of type system imports. false = import by location. -->
                    <!-- default value: false -->
                    <importByName>true</importByName>

                    <!-- Option to resolve imports while building. -->
                    <!-- default value: false -->
                    <resolveImports>false</resolveImports>

                    <!-- Amount of retries for building dependent descriptors. Default value
                     -1 leads to three retires for each script. -->
                    <!-- default value: -1 -->
                    <maxBuildRetries>-1</maxBuildRetries>

                    <!-- List of packages with language extensions -->
                    <!-- default value: none -->
                    <!--                    <extensionPackages>-->
                    <!--                        <extensionPackage>org.apache.uima.ruta</extensionPackage>-->
                    <!--                    </extensionPackages>-->


                    <inputFiles/>
                </configuration>
                <executions>
                    <execution>
                        <id>default</id>
                        <phase>process-resources</phase>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>1.8</version>
                <executions>
                    <execution>
                        <id>copy-ruta-descriptors-to-resources</id>
                        <phase>process-resources</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <target name="copy ruta descriptors to resources">
                                <copy file="${project.build.directory}/classes/de/julielab/jcore/ae/genemapper/desc/ProteinOffsetExpansionEngine.xml"
                                      tofile="src/main/resources/de/julielab/jcore/ae/genemapper/desc/ProteinOffsetExpansionEngine.xml"/>
                                <copy file="${project.build.directory}/classes/de/julielab/jcore/ae/genemapper/desc/FamilyAndSynonymsExtractionEngine.xml"
                                      tofile="src/main/resources/de/julielab/jcore/ae/genemapper/desc/FamilyAndSynonymsExtractionEngine.xml"/>
                                <copy file="${project.build.directory}/classes/de/julielab/jcore/ae/genemapper/desc/OrganismEnumerationEngine.xml"
                                      tofile="src/main/resources/de/julielab/jcore/ae/genemapper/desc/OrganismEnumerationEngine.xml"/>
                                <copy file="${project.build.directory}/classes/de/julielab/jcore/ae/genemapper/desc/CorefResolutionEngine.xml"
                                      tofile="src/main/resources/de/julielab/jcore/ae/genemapper/desc/CorefResolutionEngine.xml"/>
                                <copy file="${project.build.directory}/classes/de/julielab/jcore/ae/genemapper/desc/AppositionResolutionEngine.xml"
                                      tofile="src/main/resources/de/julielab/jcore/ae/genemapper/desc/AppositionResolutionEngine.xml"/>
                                <copy file="${project.build.directory}/classes/de/julielab/jcore/ae/genemapper/desc/FamilyResolutionEngine.xml"
                                      tofile="src/main/resources/de/julielab/jcore/ae/genemapper/desc/FamilyResolutionEngine.xml"/>
                                <copy file="${project.build.directory}/classes/de/julielab/jcore/ae/genemapper/desc/FamilyResolutionEngine.xml"
                                      tofile="src/main/resources/de/julielab/jcore/ae/genemapper/desc/WikipediaFamilyParsingEngine.xml"/>
                                <copy file="${project.build.directory}/classes/de/julielab/jcore/ae/genemapper/desc/NonGeneEntityRecognizerEngine.xml"
                                      tofile="src/main/resources/de/julielab/jcore/ae/genemapper/desc/NonGeneEntityRecognizerEngine.xml"/>
                            </target>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.uima</groupId>
                <artifactId>jcasgen-maven-plugin</artifactId>
                <version>${uima-version}</version>  <!-- change this to the latest version -->
                <executions>
                    <execution>
                        <goals>
                            <goal>generate</goal>
                        </goals>  <!-- this is the only goal -->
                        <!-- runs in phase process-resources by default -->
                        <!--                        <phase>process-classes</phase>-->
                        <configuration>

                            <!-- REQUIRED -->
                            <typeSystemIncludes>
                                <!-- one or more ant-like file patterns
                                     identifying top level descriptors -->
                                <typeSystemInclude>
                                    target/classes/de/julielab/jcore/ae/genemapper/desc/ProteinOffsetExpansionTypeSystem.xml
                                </typeSystemInclude>
                                <typeSystemInclude>
                                    target/classes/de/julielab/jcore/ae/genemapper/desc/FamilyAndSynonymsExtractionTypeSystem.xml
                                </typeSystemInclude>
                                <typeSystemInclude>
                                    target/classes/de/julielab/jcore/ae/genemapper/desc/OrganismEnumerationTypeSystem.xml
                                </typeSystemInclude>
                                <typeSystemInclude>
                                    target/classes/de/julielab/jcore/ae/genemapper/desc/FamilyResolutionTypeSystem.xml
                                </typeSystemInclude>
                                <typeSystemInclude>
                                    target/classes/de/julielab/jcore/ae/genemapper/desc/WikipediaFamilyParsingTypeSystem.xml
                                </typeSystemInclude>
                                <typeSystemInclude>
                                    target/classes/de/julielab/jcore/ae/genemapper/desc/NonGeneEntityRecognizerTypeSystem.xml
                                </typeSystemInclude>
                            </typeSystemIncludes>

                            <!-- OPTIONAL -->
                            <!-- a sequence of ant-like file patterns
                                 to exclude from the above include list -->
                            <typeSystemExcludes>
                            </typeSystemExcludes>

                            <!-- OPTIONAL -->
                            <!-- where the generated files go -->
                            <!-- default value:
                                 ${project.build.directory}/generated-sources/jcasgen" -->
                            <outputDirectory>
                                src/main/java
                            </outputDirectory>

                            <!-- true or false, default = false -->
                            <!-- if true, then although the complete merged type system
                                 will be created internally, only those types whose
                                 definition is contained within this maven project will be
                                 generated.  The others will be presumed to be
                                 available via other projects. -->
                            <!-- OPTIONAL -->
                            <limitToProject>true</limitToProject>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>