<!--
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/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>
  </files>
</assembly>
