<?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.
-->
<assembly>
  <id>tagsync</id>
  <formats>
     <format>tar.gz</format>
	 <format>zip</format>
  </formats>
  <baseDirectory>${project.name}-${project.version}-tagsync</baseDirectory>
  <includeBaseDirectory>true</includeBaseDirectory>
  <moduleSets>
    <moduleSet>
     <binaries>
        <includeDependencies>false</includeDependencies>
        <unpack>false</unpack>
	    <directoryMode>755</directoryMode>
	    <fileMode>644</fileMode>
  		<dependencySets>
   			<dependencySet>
     			<outputDirectory>/lib</outputDirectory>
				<includes>
					<include>com.101tec:zkclient</include>
					<include>com.google.code.gson:gson:jar:${gson.version}</include>
					<include>com.google.guava:guava:jar:${google.guava.version}</include>
					<include>com.sun.jersey:jersey-bundle:jar:${jersey-bundle.version}</include>
					<include>com.sun.jersey.contribs:jersey-multipart:jar:${sun-jersey-bundle.version}</include>
					<include>org.apache.atlas:atlas-notification:jar:${atlas.version}</include>
					<include>org.apache.atlas:atlas-intg:jar:${atlas.version}</include>
					<include>org.apache.atlas:atlas-client-v1:jar:${atlas.version}</include>
					<include>org.apache.atlas:atlas-client-v2:jar:${atlas.version}</include>
					<include>org.apache.atlas:atlas-client-common:jar:${atlas.version}</include>
					<include>org.apache.atlas:atlas-common:jar:${atlas.version}</include>
					<include>org.apache.commons:commons-compress:jar:${atlas.commons.compress.version}</include>
					<include>org.apache.hadoop:hadoop-auth</include>
					<include>org.apache.hadoop:hadoop-common</include>
					<include>org.apache.kafka:kafka_${scala.binary.version}:jar:${kafka.version}</include>
					<include>org.apache.kafka:kafka-clients:jar:${kafka.version}</include>
					<include>org.apache.ranger:credentialbuilder</include>
					<include>org.apache.ranger:ranger-plugins-cred</include>
					<include>org.apache.ranger:ranger-plugins-common</include>
					<include>org.apache.ranger:ranger-util</include>
					<include>org.apache.zookeeper:zookeeper:jar:${zookeeper.version}</include>
					<include>com.fasterxml.jackson.core:jackson-annotations:jar:${atlas.jackson.version}</include>
					<include>com.fasterxml.jackson.core:jackson-core:jar:${atlas.jackson.version}</include>
					<include>com.fasterxml.jackson.core:jackson-databind:jar:${atlas.jackson.version}</include>
					<include>com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:jar:${atlas.jackson.version}</include>
					<include>com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:jar:${atlas.jackson.version}</include>
					<include>com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:${atlas.jackson.version}</include>
					<include>org.codehaus.jackson:jackson-core-asl:jar:${codehaus.jackson.version}</include>
					<include>org.codehaus.jackson:jackson-mapper-asl:jar:${codehaus.jackson.version}</include>
					<include>org.codehaus.jackson:jackson-jaxrs:jar:${codehaus.jackson.version}</include>
					<include>org.codehaus.jettison:jettison:jar:${jettison.version}</include>
					<include>org.scala-lang:scala-library:jar:${scala.version}</include>
					<include>org.slf4j:slf4j-api</include>
					<include>aopalliance:aopalliance:jar:${aopalliance.version}</include>
					<include>commons-cli:commons-cli:jar:${commons.cli.version}</include>
					<include>commons-codec:commons-codec</include>
					<include>commons-collections:commons-collections:jar:${commons.collections.version}</include>
					<include>commons-configuration:commons-configuration:jar:${commons.configuration.version}</include>
					<include>commons-io:commons-io:jar:${commons.io.version}</include>
					<include>commons-lang:commons-lang:jar:${commons.lang.version}</include>
					<include>commons-logging:commons-logging:jar:${commons.logging.version}</include>
					<include>javax.inject:javax.inject:jar:${javax-inject.version}</include>
					<include>joda-time:joda-time:jar:${joda-time.version}</include>
					<include>log4j:log4j:jar:${log4j.version}</include>
				</includes>
				<unpack>false</unpack>
  			</dependencySet>
  		</dependencySets>
        <outputDirectory>/dist</outputDirectory>
     </binaries>
     <includes>
		<include>org.apache.ranger:ranger-tagsync</include>
     </includes>
    </moduleSet>
  </moduleSets>
  <fileSets>
	<fileSet>
	    	<directoryMode>755</directoryMode>
	    	<fileMode>644</fileMode>
		<outputDirectory>/conf.dist</outputDirectory>
		<directory>tagsync/conf.dist</directory>
	</fileSet>
	<fileSet>
	    	<directoryMode>755</directoryMode>
	    	<fileMode>644</fileMode>
		<outputDirectory>/conf.dist/etc/ranger/data</outputDirectory>
		<directory>tagsync/src/main/resources/etc/ranger/data</directory>
	</fileSet>
	<fileSet>
	    	<directoryMode>755</directoryMode>
		<fileMode>544</fileMode>
		<outputDirectory>/</outputDirectory>
		<directory>tagsync/scripts</directory>
		<excludes>
			<exclude>ranger-tagsync.sh</exclude>
		</excludes>
	</fileSet>
	<fileSet>
		<directoryMode>755</directoryMode>
		<fileMode>444</fileMode>
		<outputDirectory>/templates</outputDirectory>
		<directory>tagsync/conf/templates</directory>
	</fileSet>
        <fileSet>
	    	<directoryMode>755</directoryMode>
                <outputDirectory>/</outputDirectory>
                <directory>${project.build.directory}</directory>
                <includes>
                        <include>version</include>
                </includes>
		<fileMode>444</fileMode>
        </fileSet>
  </fileSets>
  <files>
      <file>
		<source>tagsync/scripts/ranger-tagsync.sh</source>
		<outputDirectory>/</outputDirectory>
		<destName>ranger-tagsync</destName>
		<fileMode>755</fileMode>
      </file>
   </files>
</assembly>
