blob: 0b2f077a5d8678d1ad5365e3f10af0177345c2aa [file] [log] [blame]
<!--
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.
-->
<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>
<artifactId>slider-assembly</artifactId>
<name>Apache Slider Binary Distribution</name>
<packaging>pom</packaging>
<description>Apache Slider is a tool for dynamically deploying distributed applications to an Apache YARN cluster. This module provides the binary redistributable.</description>
<parent>
<groupId>org.apache.slider</groupId>
<artifactId>slider</artifactId>
<version>0.92.0-incubating-SNAPSHOT</version>
</parent>
<properties>
<rpm.basedir>/usr/lib/slider</rpm.basedir>
<rpm.confdir>${rpm.basedir}/conf</rpm.confdir>
<rpm.bindir>${rpm.basedir}/bin</rpm.bindir>
<rpm.libdir>${rpm.basedir}/lib</rpm.libdir>
<rpm.agentdir>${rpm.basedir}/agent</rpm.agentdir>
<rpm.username>root</rpm.username>
<rpm.groupname>root</rpm.groupname>
<src.confdir>src/conf-hdp</src.confdir>
<src.libdir>${project.build.directory}/lib</src.libdir>
<src.agent.ini.dir>${project.build.directory}/../../slider-agent/conf</src.agent.ini.dir>
<python.ver>python &gt;= 2.6</python.ver>
<executable.python>${project.basedir}/../slider-agent/target/test/python-wrap</executable.python>
<python.path.l>${project.build.directory}/python-src:${project.basedir}/../slider-agent/target/test/mock:${project.build.directory}/python-test/scripts</python.path.l>
<skipTests>false</skipTests>
</properties>
<build>
<plugins>
<!--read in a build.properties file if defined-->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>${maven.properties.version}</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<quiet>true</quiet>
<files>
<file>build.properties</file>
<file>../build.properties</file>
</files>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>${maven-exec-plugin.version}</version>
<executions>
<execution>
<configuration>
<executable>${executable.python}</executable>
<workingDirectory>${project.build.directory}/python-test</workingDirectory>
<arguments>
<argument>unitTests.py</argument>
</arguments>
<environmentVariables>
<PYTHONPATH>${python.path.l}</PYTHONPATH>
</environmentVariables>
<skip>${skipTests}</skip>
</configuration>
<id>python-test</id>
<phase>test</phase>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- pull in all dependencies -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>${maven-dependency-plugin.version}</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>true</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
<!-- <tarLongFileFormat>gnu</tarLongFileFormat>-->
</configuration>
</execution>
<execution>
<!-- copy in the agent tar file -->
<id>copy</id>
<phase>prepare-package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>org.apache.slider</groupId>
<artifactId>slider-agent</artifactId>
<type>tar.gz</type>
<overWrite>false</overWrite>
<outputDirectory>${project.build.directory}/agent</outputDirectory>
<destFileName>slider-agent.tar.gz</destFileName>
</artifactItem>
</artifactItems>
</configuration>
</execution>
<execution>
<!-- copy in the agent tar file -->
<id>copy-to-lib</id>
<phase>prepare-package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>org.apache.slider</groupId>
<artifactId>slider-agent</artifactId>
<type>tar.gz</type>
<overWrite>false</overWrite>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<destFileName>slider-agent.tar.gz</destFileName>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>${maven-source-plugin.version}</version>
<inherited>true</inherited>
<executions>
<execution>
<id>attach-sources</id>
<phase>verify</phase>
<goals>
<goal>jar</goal>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>${maven-enforcer-plugin.version}</version>
<inherited>false</inherited>
<configuration>
<rules>
<requireMavenVersion>
<version>${maven.version.range}</version>
</requireMavenVersion>
<requireJavaVersion>
<version>${project.java.src.version}</version>
</requireJavaVersion>
</rules>
</configuration>
<executions>
<execution>
<id>default</id>
<goals>
<goal>enforce</goal>
</goals>
<phase>validate</phase>
</execution>
</executions>
</plugin>
<!-- assemble the tar file -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>${maven-assembly-plugin.version}</version>
<executions>
<execution>
<id>make-dependency</id>
<phase>prepare-package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<tarLongFileMode>gnu</tarLongFileMode>
<descriptors>
<descriptor>src/assembly/slider-dependency.xml</descriptor>
</descriptors>
<finalName>slider</finalName>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>${maven-resources-plugin.version}</version>
<executions>
<execution>
<id>copy-dependency</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<overwrite>true</overwrite>
<resources>
<resource>
<directory>${project.build.directory}</directory>
<includes>
<include>slider-dependency.tar.gz</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
<execution>
<id>copy-python-resources</id>
<phase>generate-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/python-src</outputDirectory>
<resources>
<resource>
<directory>${basedir}/src/main/scripts</directory>
</resource>
</resources>
</configuration>
</execution>
<execution>
<id>copy-python-test-resources</id>
<phase>generate-test-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/python-test</outputDirectory>
<resources>
<resource>
<directory>${basedir}/src/test/python</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>${maven-assembly-plugin.version}</version>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<tarLongFileMode>gnu</tarLongFileMode>
<descriptors>
<descriptor>src/assembly/slider-bin.xml</descriptor>
</descriptors>
<finalName>slider-${project.version}</finalName>
</configuration>
</execution>
</executions>
</plugin>
<!-- verification phase checks for files in the target assembly -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-verifier-plugin</artifactId>
<version>${maven-verifier-plugin.version}</version>
<configuration>
<verificationFile>src/assembly/verifications.xml</verificationFile>
</configuration>
<executions>
<execution>
<id>main</id>
<phase>verify</phase>
<goals>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<reporting>
<plugins>
</plugins>
</reporting>
<profiles>
<profile>
<id>Windows</id>
<activation>
<os><family>windows</family></os>
</activation>
<properties>
<executable.python>python</executable.python>
<python.path.l>${project.build.directory}\python-src;${project.basedir}\..\slider-agent\target\test\mock;${project.basedir}\python-test\scripts</python.path.l>
</properties>
</profile>
<profile>
<id>Linux</id>
<activation>
<os><family>!windows</family></os>
</activation>
</profile>
<profile>
<id>rpm</id>
<build>
<plugins>
<!-- RPM -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>rpm-maven-plugin</artifactId>
<version>${maven-rpm-plugin.version}</version>
<executions>
<execution>
<id>generate-rpm</id>
<goals>
<goal>rpm</goal>
</goals>
</execution>
</executions>
<configuration>
<license>http://www.apache.org/licenses/LICENSE-2.0</license>
<name>slider</name>
<version>${project.version}</version>
<!--
<release>${project.version}</release>
-->
<!---->
<distribution />
<group>Applications/Engineering</group>
<!--<icon>src/main/resources/icon.gif</icon>-->
<!--<packager>ASF</packager>-->
<prefix>${rpm.basedir}</prefix>
<!--
<changelogFile>src/changelog</changelogFile>
-->
<!-- <defineStatements>
<defineStatement>_unpackaged_files_terminate_build 0</defineStatement>
</defineStatements>-->
<provides>
<provide>apache-slider</provide>
</provides>
<mappings>
<mapping>
<directory>${rpm.basedir}</directory>
<!-- RWXR.XR.X -->
<filemode>755</filemode>
<username>${rpm.username}</username>
<groupname>${rpm.groupname}</groupname>
<sources>
</sources>
</mapping>
<!-- binaries -->
<mapping>
<directory>${rpm.bindir}</directory>
<!-- RWXR.XR.X -->
<filemode>0755</filemode>
<username>${rpm.username}</username>
<groupname>${rpm.groupname}</groupname>
<sources>
<source>
<location>src/main/scripts</location>
</source>
</sources>
</mapping>
<!-- library -->
<mapping>
<directory>${rpm.libdir}</directory>
<!-- RWXR.XR.X -->
<filemode>755</filemode>
<username>${rpm.username}</username>
<groupname>${rpm.groupname}</groupname>
<sources>
<source>
<location>${src.libdir}</location>
</source>
</sources>
</mapping>
<!-- configuration -->
<mapping>
<directory>${rpm.confdir}</directory>
<configuration>true</configuration>
<filemode>0755</filemode>
<username>${rpm.username}</username>
<groupname>${rpm.groupname}</groupname>
<sources>
<source>
<location>${src.confdir}</location>
</source>
</sources>
</mapping>
<!-- agent.ini -->
<mapping>
<directory>${rpm.agentdir}/conf</directory>
<configuration>true</configuration>
<filemode>0755</filemode>
<username>${rpm.username}</username>
<groupname>${rpm.groupname}</groupname>
<directoryIncluded>false</directoryIncluded>
<sources>
<source>
<location>${src.agent.ini.dir}</location>
<includes>
<include>*.ini
</include>
</includes>
</source>
</sources>
</mapping>
<!-- needed to apply attribute to directory -->
<mapping>
<directory>${rpm.agentdir}</directory>
<filemode>0755</filemode>
<username>${rpm.username}</username>
<groupname>${rpm.groupname}</groupname>
<directoryIncluded>true</directoryIncluded>
</mapping>
<mapping>
<directory>${rpm.agentdir}/conf</directory>
<filemode>0755</filemode>
<username>${rpm.username}</username>
<groupname>${rpm.groupname}</groupname>
<directoryIncluded>true</directoryIncluded>
</mapping>
</mappings>
<!--
Scripts. Very dangerous in RPMs unless you know exactly what you are doing.
It's very easy to break the uninstall process, in particular.
-->
<!--
<preinstallScriptlet>
<script>echo "installing slider"</script>
</preinstallScriptlet>
-->
<!--
<postinstallScriptlet>
<scriptFile>src/main/scripts/postinstall</scriptFile>
<fileEncoding>utf-8</fileEncoding>
</postinstallScriptlet>
-->
<!--
<preremoveScriptlet>
<scriptFile>src/main/scripts/preremove</scriptFile>
<fileEncoding>utf-8</fileEncoding>
</preremoveScriptlet>
-->
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>azure</id>
<dependencies>
<!--Hadoop 2.6 doesn't have this artifact-->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-azure</artifactId>
</dependency>
</dependencies>
</profile>
</profiles>
<dependencies>
<dependency>
<groupId>org.apache.slider</groupId>
<artifactId>slider-core</artifactId>
<version>${project.version}</version>
</dependency>
<!--
needed to order the build and ensure the agent tar is found
the test scope ensures that it isn't copied into the lib dir
-->
<dependency>
<groupId>org.apache.slider</groupId>
<artifactId>slider-agent</artifactId>
<version>${project.version}</version>
<scope>test</scope>
<type>tar.gz</type>
</dependency>
<dependency>
<groupId>com.beust</groupId>
<artifactId>jcommander</artifactId>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-aws</artifactId>
</dependency>
</dependencies>
</project>