<?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.parent.name}-${project.version}-tagsync</baseDirectory>
	<includeBaseDirectory>true</includeBaseDirectory>
	<moduleSets>
		<moduleSet>
			<useAllReactorProjects>true</useAllReactorProjects>
			<includes>
				<include>org.apache.ranger:ranger-tagsync</include>
			</includes>
			<binaries>
				<outputDirectory>dist</outputDirectory>
				<includeDependencies>true</includeDependencies>
				<unpack>false</unpack>
				<directoryMode>755</directoryMode>
				<fileMode>644</fileMode>
				<dependencySets>
					<dependencySet>
						<outputDirectory>lib</outputDirectory>
						<unpack>false</unpack>
						<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.hadoop:hadoop-auth</include>
							<include>org.apache.hadoop:hadoop-common</include>
							<include>org.apache.commons:commons-compress</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.databind.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:jar:${commons.codec.version}</include>
							<include>commons-collections:commons-collections:jar:${commons.collections.version}</include>
							<include>commons-configuration:commons-configuration:jar:${commons.configuration1.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>
							<include>org.codehaus.woodstox:stax2-api</include>
							<include>com.fasterxml.woodstox:woodstox-core</include>
							<include>org.apache.htrace:htrace-core4</include>
							<include>com.kstruct:gethostname4j:jar:${kstruct.gethostname4j.version}</include>
							<include>net.java.dev.jna:jna:jar:${jna.version}</include>
							<include>net.java.dev.jna:jna-platform:jar:${jna-platform.version}</include>
							<include>com.fasterxml.woodstox:woodstox-core:jar:${fasterxml.woodstox.version}</include>
							<include>org.codehaus.woodstox:stax2-api:jar:${codehaus.woodstox.stax2api.version}</include>
							<include>org.apache.commons:commons-configuration2:jar:${commons.configuration.version}</include>
							<include>org.cloudera.logredactor:logredactor</include>
						</includes>
					</dependencySet>
				</dependencySets>
			</binaries>
		</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>${project.parent.basedir}/tagsync/scripts/ranger-tagsync.sh</source>
			<outputDirectory></outputDirectory>
			<destName>ranger-tagsync</destName>
			<fileMode>755</fileMode>
		</file>
	</files>
</assembly>
