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

<!-- This pom serves as the release top level project,
     and for users wanting to build all of the
     base UIMA Java SDK
 -->

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

  <parent>
    <groupId>org.apache.uima</groupId>
    <artifactId>uimaj-parent</artifactId>
    <version>3.1.2-SNAPSHOT</version>
    <relativePath>uimaj-parent/pom.xml</relativePath>
  </parent>

  <artifactId>uimaj</artifactId>
  <packaging>pom</packaging>
  <name>Apache UIMA Java SDK: ${project.artifactId}</name>
  <description>The top project for the uimaj SDK</description>
  <url>${uimaWebsiteUrl}</url>

  <!-- Special inheritance note
       even though the <scm> element that follows is exactly the
       same as those in super poms, it cannot be inherited because
       there is some special code that computes the connection elements
       from the chain of parent poms, if this is omitted.

       Keeping this a bit factored allows cutting/pasting the <scm>
       element, and just changing the following two properties -->
  <scm>
    <connection>
      scm:git:https://github.com/apache/uima-uimaj/
    </connection>
    <developerConnection>
      scm:git:https://github.com/apache/uima-uimaj/
    </developerConnection>
    <url>
      https://github.com/apache/uima-uimaj/
    </url>
    <tag>HEAD</tag>
  </scm>

  <properties>
    <uimaScmProject>${project.artifactId}</uimaScmProject>
    <jiraVersion>3.1.1SDK</jiraVersion>   
    <assemblyFinalName>uimaj-${project.version}</assemblyFinalName> 
    <assemblyBinDescriptor>src/main/assembly/bin-without-jackson.xml</assemblyBinDescriptor> 
    <postNoticeText>${ibmNoticeText}</postNoticeText>    
  </properties>

  <!-- dependencies that go into the various builds via dependency-sets -->
  <!-- version is specified here -->
  <!-- default scope is compile -->
  <!-- Used for assemblies, to insure they're built *before* the assembly -->
  
  <!-- Note: as of 6/2013 it seems these dependencies may not be needed
       They are not up-to-date with all the subprojects, but that doesn't
       seem to matter.
       
       Consider deleting at some point -->
        
  <dependencies>
    <dependency>
      <groupId>org.apache.uima</groupId> 
      <artifactId>uimaj-adapter-vinci</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.uima</groupId> 
      <artifactId>uimaj-adapter-soap</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.uima</groupId> 
      <artifactId>uimaj-bootstrap</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>uimaj-core</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>uimaj-cpe</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>uimaj-examples</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>uimaj-tools</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>uimaj-ep-cas-editor</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>uimaj-ep-configurator</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>uimaj-ep-debug</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>uimaj-ep-jcasgen</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>uimaj-ep-pear-packager</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>uimaj-ep-runtime</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>uimaj-ep-cas-editor-ide</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>uimaj-ep-launcher</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>uimaj-json</artifactId>
      <version>${project.version}</version>
    </dependency>    
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>uimaj-v3migration-jcas</artifactId>
      <version>${project.version}</version>
    </dependency>  
    <dependency>
      <groupId>org.bitbucket.mstrobel</groupId>
      <artifactId>procyon-core</artifactId>
      <version>0.5.32</version>
    </dependency>  
    <dependency>
      <groupId>org.bitbucket.mstrobel</groupId>
      <artifactId>procyon-compilertools</artifactId>
      <version>0.5.32</version>
    </dependency>  
    <dependency>    <!-- apache v2 license  2016 checked -->
      <groupId>com.github.javaparser</groupId>
      <artifactId>javaparser-core</artifactId>
      <version>3.2.2</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
    </dependency> 
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-jdk14</artifactId>
    </dependency>
       
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-slf4j-impl</artifactId>
      <version>${log4j.version}</version>
    </dependency>    
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
      <version>${log4j.version}</version>
    </dependency>    
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
      <version>${log4j.version}</version>
    </dependency>    
 
  </dependencies>

  
  <modules>
    <module>uimaj-parent</module>
    <module>aggregate-uimaj</module>
  </modules>
  
  <build>

    <plugins>

      <!-- This java doc config is for building the ones distributed with the bin packaging, and also 
           posted on our website.  It is not a complete javadoc - it only has user-level API info.
        
           There is another javadoc config in the parent POM that builds all the java docs - intended
           for use by developers (currently not used) 
           
           There is also a javadoc config for each individual maven Jar artifact -->
      
      <plugin>
        <artifactId>maven-javadoc-plugin</artifactId>
        <executions>
          <execution>
            <id>javadocs-distr</id> <!-- name should match one in parent-pom --> 
            <phase>prepare-package</phase>  <!-- must come before package which uses the results -->
            <!--phase>deploy</phase--> <!-- comment above and uncomment to disable javadocs, for testing/experimentation, with assembly:assembly-->
            <goals>
              <goal>javadoc</goal>
            </goals>
            <configuration> 
              <groups>
                <group>
                  <title>Packages</title>
                  <packages>*</packages>
                </group>
              </groups>
              <sourcepath>uimaj-core/src/main/java;uimaj-json/src/main/java;uimaj-document-annotation/src/main/java</sourcepath>
              <excludePackageNames>*.internal.*:*.impl.*</excludePackageNames>
              <!-- add a few classes in impl packages that are directly used by user code -->
              <additionalparam>
                ${basedir}/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASDeserializer.java
                ${basedir}/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASParsingException.java
                ${basedir}/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASSerializer.java
                ${basedir}/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasDeserializer.java
                ${basedir}/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasSerializer.java
                ${basedir}/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiSerializationSharedData.java
                ${basedir}/uimaj-core/src/main/java/org/apache/uima/cas/impl/Serialization.java                
                ${basedir}/uimaj-cpe/src/main/java/org/apache/uima/collection/impl/metadata/cpe/CpeDescriptorFactory.java
                ${basedir}/uimaj-cpe/src/main/java/org/apache/uima/collection/impl/cpm/engine/CPMChunkTimeoutException.java
              </additionalparam>
              <doctitle>Apache UIMA Java SDK ${project.version} User-Level API Documentation</doctitle>
              <windowtitle>Apache UIMA Java SDK ${project.version} User-Level API Documentation</windowtitle>
              <additionalDependencies>
							  <additionalDependency>
							    <groupId>com.fasterxml.jackson.core</groupId>
						      <artifactId>jackson-core</artifactId>
						      <version>${jackson.version}</version>
							  </additionalDependency>
							</additionalDependencies>
            </configuration>
          </execution>
        </executions>
      </plugin>
    
      <plugin>
          <groupId>org.apache.rat</groupId>
          <artifactId>apache-rat-plugin</artifactId>
          <executions>
            <execution>
              <id>default-cli</id>
              <goals><goal>check</goal></goals>
              <phase>verify</phase>
              <!-- default configuration -->
              <configuration>
                <excludes combine.children="append">
                  <exclude>release.properties</exclude> <!-- generated file -->
                  <exclude>README*</exclude>
                  <exclude>RELEASE_NOTES*</exclude>
                  <exclude>issuesFixed/**</exclude> <!-- generated file -->
                  <exclude>src/main/resources/docbook-shared/titlepage/*.xsl</exclude>
                  <exclude>marker-file-identifying-*</exclude> <!-- empty file -->
                  <exclude>DEPENDENCIES</exclude>  <!-- generated file -->
                  <exclude>.idea/**</exclude>
                  
                  <!--  workaround https://issues.apache.org/jira/browse/RAT-97 -->
                  <exclude>aggregate-uimaj*/**</exclude>
                  <exclude>jVinci/**</exclude>
                  <exclude>PearPackagingMavenPlugin/**</exclude>
                  <exclude>jcasgen-maven-plugin/**</exclude>
                  <exclude>uima-docbook-*/**</exclude>
                  <exclude>uimaj-adapter-*/**</exclude>
                  <exclude>uimaj-component-test-util/**</exclude>
                  <exclude>uimaj-core/**</exclude>
                  <exclude>uimaj-cpe/**</exclude>
                  <exclude>uimaj-document-annotation/**</exclude>
                  <exclude>uimaj-eclipse-*/**</exclude>
                  <exclude>uimaj-ep-*/**</exclude>
                  <exclude>uimaj-examples/**</exclude>
                  <exclude>uimaj-test-util/**</exclude>
                  <exclude>uimaj-tools/**</exclude>
                  <exclude>uimaj-jet-expander/**</exclude>
                  <exclude>uimaj-bootstrap/**</exclude>
                  <exclude>uimaj-internal-tools/**</exclude>
                  <exclude>uimaj-json/**</exclude>
                  <exclude>uimaj-v3migration-jcas/**</exclude>
                  <exclude>src/main/bin_distr_license_notices/NOTICE-without-jackson</exclude>
               </excludes>
              </configuration>
            </execution>
          </executions>
      </plugin>
    
      <plugin> 
        <artifactId>maven-assembly-plugin</artifactId>
          <executions>
            <execution>
              <id>uima-distr</id>
                <configuration>
                  <descriptors>
                    <descriptor>${assemblyBinDescriptor}</descriptor>
                  </descriptors>
                </configuration>              
              </execution>
            </executions>
          </plugin>
         
     </plugins>
  </build>

  <profiles>
    <profile>
      <id>dependency-checks</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.owasp</groupId>
            <artifactId>dependency-check-maven</artifactId>
            <version>2.1.1</version>
            <executions>
              <execution>
               <goals><goal>check</goal></goals>
               </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    
    <profile>
      <id>apache-release</id>
      
      <build>
        <!-- Run jira report -->
        <!-- depends on having -DjiraVersion set -->
        <plugins>
          <plugin>
            <artifactId>maven-changes-plugin</artifactId>
            <executions>
              <execution>
                <id>default-cli</id>
                <configuration>
                  <fixVersionIds>${jiraVersion}</fixVersionIds>
                </configuration>
              </execution>
            </executions>  
          </plugin>
        </plugins>     
      </build>
    </profile>
    
    <profile>
      <id>json-support</id>
      <activation>
        <file><exists>pom.xml</exists></file>  <!-- active by default, turn off via command line -P!json-support  -->
      </activation>
      <properties>
        <assemblyBinDescriptor>src/main/assembly/bin.xml</assemblyBinDescriptor>  
      </properties>
      <modules>
        <module>uimaj-json</module>
      </modules>
    </profile>
  </profiles>    
    
</project>
