<!--
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.    
-->

<assembly>
  <id>bin</id>
  <formats>
    <format>tar.gz</format>  
    <format>zip</format>
  </formats>
  
  <baseDirectory>apache-uima</baseDirectory> <!-- so it is unzippable over base - needs same name -->
  <includeBaseDirectory>true</includeBaseDirectory>
  
  <dependencySets>
            
    <!-- UIMA-AS -->
    <dependencySet>
      <includes>
        <include>org.apache.uima:uimaj-as-activemq</include>
        <include>org.apache.uima:uimaj-as-core</include>
        <include>org.apache.uima:uimaj-as-jms</include>
        <include>org.apache.uima:uimaj-as-camel</include>
      </includes>      
      <outputFileNameMapping>${artifact.artifactId}.jar</outputFileNameMapping>
      <outputDirectory>lib</outputDirectory>
      <useProjectArtifact>false</useProjectArtifact>
      <fileMode>644</fileMode> 
      <directoryMode>755</directoryMode>        
    </dependencySet>

    <!-- UIMA-AS included other projects -->
    <dependencySet>
      <includes>
        <include>commons-logging:commons-logging</include>
        <include>org.apache.activemq:activemq-console</include>
        <include>org.apache.activemq:activeio-core</include>
        <include>backport-util-concurrent:backport-util-concurrent</include>
        <include>org.apache.activemq:activemq-jaas</include>
        <include>org.apache.activemq:activemq-web</include>
        <include>mx4j:mx4j</include>
        <include>org.apache.geronimo.specs:geronimo-jms_1.1_spec</include>
        <include>org.apache.geronimo.specs:geronimo-j2ee-management_1.0_spec</include>
      </includes>
      <useTransitiveDependencies>false</useTransitiveDependencies>
      <outputDirectory>apache-activemq-4.1.1/lib</outputDirectory>
      <useProjectArtifact>false</useProjectArtifact>
      <fileMode>644</fileMode> 
      <directoryMode>755</directoryMode>        
    </dependencySet>
    
    <dependencySet>
      <includes>
        <include>org.springframework:spring</include>  
        <include>commons-httpclient:commons-httpclient</include>
        <include>org.mortbay.jetty:jetty</include> 
        <include>org.mortbay.jetty:jetty-util</include> 
        <include>org.mortbay.jetty:servlet-api-2.5</include>
        <include>xmlpull:xmlpull</include> <!-- need for uima-as -->
        <include>com.thoughtworks.xstream:xstream</include> <!-- need for uima-as -->
        <include>org.apache.derby:derby</include>
        <include>org.apache.xbean:xbean-spring</include>
        <include>commons-beanutils:commons-beanutils</include>
		    <include>commons-collections:commons-collections</include>
        <include>commons-dbcp:commons-dbcp</include>
        <include>commons-pool:commons-pool</include>
        <include>org.apache.geronimo.specs:geronimo-j2ee-connector_1.5_spec</include>
        <include>org.apache.geronimo.specs:geronimo-j2ee-jacc_1.0_spec</include>
        <include>activemq:jmdns</include>
        <include>log4j:log4j</include>
        <include>mx4j:mx4j-remote</include>
        <include>mx4j:mx4j-tools</include>
      </includes>
      <useTransitiveDependencies>false</useTransitiveDependencies>
      <outputDirectory>apache-activemq-4.1.1/lib/optional</outputDirectory>
      <useProjectArtifact>false</useProjectArtifact>
      <fileMode>644</fileMode> 
      <directoryMode>755</directoryMode>        
    </dependencySet>

    <!--dependencySet>
      <includes>
        <include>net.sf.saxon:saxon</include>
      </includes>
      <useTransitiveDependencies>false</useTransitiveDependencies>
      <outputDirectory>lib</outputDirectory>
      <useProjectArtifact>false</useProjectArtifact-->
      <!-- we name this version of the saxon jar to indicate it 
           supports xslt 2.0 -->
      <!--outputFileNameMapping>saxon_xslt_2.0.jar</outputFileNameMapping>
    </dependencySet-->
   
    <!-- Copy each eclipse plugin into the /eclipsePlugins dir of the distribution -->
    <dependencySet>
      <includes>        
        <include>org.apache.uima:uimaj-ep-deployeditor</include>
        <include>org.apache.uima:uimaj-ep-runtime-deployeditor</include>
        <include>org.apache.uima:uimaj-as-osgi-runtime</include>
      </includes>
      <outputDirectory>eclipsePlugins</outputDirectory>
      <outputFileNameMapping>${artifact.build.finalName}.jar</outputFileNameMapping>
      <useProjectArtifact>false</useProjectArtifact>
      <fileMode>644</fileMode> 
      <directoryMode>755</directoryMode>        
    </dependencySet>
  </dependencySets>
  
  <!-- Add other files - scripts, documentation, examples -->
  <fileSets>
    <!-- UIMA-AS no longer includes base UIMA as of 2.3.0 -->
    <!-- base UIMA -->
    <!--fileSet>
      <directory>../uimaj-distr/src/main/scripts</directory>
      <excludes>
        <exclude>setUimaClassPath.*</exclude>
      </excludes>
      <outputDirectory>bin</outputDirectory>
      <fileMode>755</fileMode>
    </fileSet>
    <fileSet>
      <directory>../uimaj-distr/src/main/properties</directory>
      <outputDirectory>config</outputDirectory>
    </fileSet>
    <fileSet>
      <directory>../uima-docbooks/target</directory>
      <outputDirectory>docs/html</outputDirectory>
      <includes>
        <include>tools/tools.html</include>
        <include>tools/css/**</include>
        <include>images/tools/**</include>
      </includes>
    </fileSet-->
    
    <!-- uima-as -->
    
    <fileSet>
      <directory>src/main/readme</directory>
      <excludes>  <!-- these files conflict with base uima names, and will be renamed -->
        <exclude>README</exclude>
        <exclude>RELEASE_NOTES</exclude>
        <exclude>RELEASE_NOTES.html</exclude>
      </excludes>
            <!-- to get things into the base dir, use this form
           If you use <outputDirectory>.</outputDirectory> - 
           it also puts into the base dir, but creates an
           extra (empty) version of the base dir - probably 
           a bug. -->
      <outputDirectory/>
      <fileMode>644</fileMode>
    </fileSet>
    
    
    <fileSet>
      <directory>src/main/scripts</directory>
      <outputDirectory>bin</outputDirectory>
      <includes><include>**/*.sh</include></includes>
      <fileMode>755</fileMode>
      <directoryMode>755</directoryMode>        
    </fileSet>
    <fileSet>
      <directory>src/main/scripts</directory>
      <outputDirectory>bin</outputDirectory>
      <excludes><exclude>**/*.sh</exclude></excludes>
      <fileMode>644</fileMode>
      <directoryMode>755</directoryMode>        
    </fileSet>
    <fileSet>
      <directory>src/main/config</directory>
      <outputDirectory>as_config</outputDirectory>
      <fileMode>644</fileMode>
      <directoryMode>755</directoryMode>        
    </fileSet>
    <fileSet>
      <directory>src/main/readme</directory>
      <outputDirectory>uima-as/readme</outputDirectory>
      <fileMode>644</fileMode>
      <directoryMode>755</directoryMode>        
    </fileSet>
    
    <fileSet>
      <directory>target/site/apidocs</directory>
      <outputDirectory>uima-as/docs/api</outputDirectory>
      <excludes>
        <exclude>options</exclude>
        <exclude>packages</exclude>
        <exclude>files</exclude>
        <exclude>argfile</exclude>        
      </excludes>
      <fileMode>644</fileMode>
      <directoryMode>755</directoryMode>        
    </fileSet>
    <fileSet>
      <directory>../uima-as-docbooks/target</directory>
      <outputDirectory>uima-as/docs/html</outputDirectory>
      <includes>
        <include>images/**</include>
        <!--include>index.html</include-->
        <include>uima_async_scaleout/uima_async_scaleout.html</include>
        <include>uima_async_scaleout/css/**</include>
      </includes>
      <fileMode>644</fileMode>
      <directoryMode>755</directoryMode>        
    </fileSet>
    <fileSet>
      <directory>../uima-as-docbooks/target/uima_async_scaleout</directory>
      <outputDirectory>uima-as/docs/pdf</outputDirectory>
      <includes>
        <include>uima_async_scaleout.pdf</include>
      </includes>
      <fileMode>644</fileMode>
      <directoryMode>755</directoryMode>        
    </fileSet>
    <fileSet>
      <directory>../uima-as-docbooks/src</directory>
      <outputDirectory>uima-as/docs</outputDirectory>
      <includes>
        <include>index.html</include>
      </includes>
      <fileMode>644</fileMode>
      <directoryMode>755</directoryMode>        
    </fileSet>    
    <!--fileSet>
      <directory>../uimaj-examples/src/main/java</directory>
      <outputDirectory>examples/src</outputDirectory>
      <excludes>
        <exclude> org/apache/uima/examples/xmi/XmiEcoreCasConsumer.java</exclude>
        <exclude> org/apache/uima/examples/xmi/Ecore2UimaTypeSystem.java</exclude>
        <exclude> org/apache/uima/examples/xmi/UimaTypeSystem2Ecore.java</exclude>
      </excludes>
    </fileSet>
    <fileSet>
      <directory>../uimaj-examples/src/main/data</directory>
      <outputDirectory>examples/data</outputDirectory>
    </fileSet>
    <fileSet>
      <directory>../uimaj-examples/src/main/deploy</directory>
      <outputDirectory>examples/deploy</outputDirectory>
    </fileSet>
    <fileSet>
      <directory>../uimaj-examples/src/main/descriptors</directory>
      <outputDirectory>examples/descriptors</outputDirectory>
    </fileSet>
    <fileSet>
      <directory>../uimaj-examples/src/main/opennlp_wrappers</directory>
      <outputDirectory>examples/opennlp_wrappers</outputDirectory>
    </fileSet>
    <fileSet>
      <directory>../uimaj-examples/src/main/resources</directory>
      <outputDirectory>examples/resources</outputDirectory>
    </fileSet>
    <fileSet>
      <directory>../uimaj-examples/src/main/run_configuration</directory>
      <outputDirectory>examples/run_configuration</outputDirectory>
    </fileSet-->
    
    <!-- uima-as additions -->
    <fileSet>
      <directory>src/main/examples</directory>
      <outputDirectory>examples</outputDirectory>
      <fileMode>644</fileMode>
      <directoryMode>755</directoryMode>        
    </fileSet>
    <fileSet>
      <directory>../uimaj-as-activemq/src/main/java/org/apache/uima/examples/as</directory>
      <outputDirectory>examples/src/org/apache/uima/examples/as</outputDirectory>
      <fileMode>644</fileMode>
      <directoryMode>755</directoryMode>        
    </fileSet>
    
    <!-- activemq -->
    <fileSet>
      <directory>src/main/apache-activemq-4.1.1</directory>
      <outputDirectory>apache-activemq-4.1.1</outputDirectory>
      <includes><include>bin/**</include></includes>
      <excludes><exclude>bin/**/*.*</exclude></excludes>
      <fileMode>755</fileMode>
      <directoryMode>755</directoryMode>        
    </fileSet>  
    <fileSet>
      <directory>src/main/apache-activemq-4.1.1</directory>
      <outputDirectory>apache-activemq-4.1.1</outputDirectory>
      <includes><include>bin/**/*.*</include></includes>
      <fileMode>644</fileMode>
      <directoryMode>755</directoryMode>        
    </fileSet>  
    <fileSet>
      <directory>src/main/apache-activemq-4.1.1</directory>
      <outputDirectory>apache-activemq-4.1.1</outputDirectory>
      <excludes><exclude>bin/**</exclude></excludes>
      <fileMode>644</fileMode>
      <directoryMode>755</directoryMode>        
    </fileSet>  
        
    <!-- saxon -->    
    <fileSet>
      <directory>src/main/saxon</directory>
      <outputDirectory>saxon</outputDirectory>
      <fileMode>644</fileMode>
      <directoryMode>755</directoryMode>        
    </fileSet>
  </fileSets>
  
  <files>
    <!--  skip the main uima project files 
    <file>
      <source>../uimaj-examples/src/main/eclipseProject/project</source>
      <outputDirectory>examples</outputDirectory>
      <destName>.project</destName>
      <fileMode>644</fileMode> 
    </file>
    <file>
      <source> ../uimaj-examples/src/main/eclipseProject/ecore_src_readme.txt</source>
      <outputDirectory>examples/ecore_src</outputDirectory>
      <destName>readme.txt</destName>
      <fileMode>644</fileMode> 
    </file>
    <file>
      <source>../uimaj-examples/src/main/java/org/apache/uima/examples/xmi/XmiEcoreCasConsumer.java</source>
      <outputDirectory>examples/ecore_src/org/apache/uima/examples/xmi</outputDirectory>
      <fileMode>644</fileMode> 
    </file>
    <file>
      <source>../uimaj-examples/src/main/java/org/apache/uima/examples/xmi/Ecore2UimaTypeSystem.java</source>
      <outputDirectory>examples/ecore_src/org/apache/uima/examples/xmi</outputDirectory>
      <fileMode>644</fileMode> 
    </file>
    <file>
      <source>../uimaj-examples/src/main/java/org/apache/uima/examples/xmi/UimaTypeSystem2Ecore.java</source>
      <outputDirectory>examples/ecore_src/org/apache/uima/examples/xmi</outputDirectory>
      <fileMode>644</fileMode> 
    </file>
    
    -->
    <file>
      <source>src/main/eclipseProject/classpath</source>
      <outputDirectory>examples</outputDirectory>
      <destName>.classpath</destName>
      <fileMode>644</fileMode> 
    </file>
    
    <!-- put readme file with altered name at the top level -->
    <file>
      <source>src/main/readme/README</source>
      <outputDirectory></outputDirectory>
      <destName>README-uima-as</destName>
      <fileMode>644</fileMode>
    </file>
    
  </files>
</assembly>
