Home

Awesome

marathon-maven-plugin

Maven plugin for interacting with Marathon

It can both process marathon.json config and use it to push it to Marathon host for deployment.

Maven documentation

For detailed documentation of goals and configuration options run in your project: mvn com.holidaycheck:marathon-maven-plugin:help -Ddetail=true

Basic usage

This plugin plays well with docker-maven-plugin so you might want to use it e.g. to include proper versioning of Docker image in marathon.json.

Add plugin configuration to your pom.xml:

<plugin>
	<groupId>com.holidaycheck</groupId>
	<artifactId>marathon-maven-plugin</artifactId>
	<version>0.0.2</version>
	<configuration>
		<image>${docker-image-prefix}/${project.build.finalName}:${project.version}-${gitShortCommitId}</image>
		<marathonHost>http://${mesos.host}:${mesos.port}</marathonHost>
	</configuration>
	<executions>
		<execution>
			<id>processConfig</id>
			<phase>install</phase>
			<goals>
				<goal>processConfig</goal>
			</goals>
		</execution>
		<execution>
			<id>deploy</id>
			<phase>deploy</phase>
			<goals>
				<goal>deploy</goal>
			</goals>
            <configuration>
                    <waitForDeploymentFinished>true</waitForDeploymentFinished>
                    <waitForDeploymentTimeout>10</waitForDeploymentTimeout>
            </configuration>
		</execution>
		<execution>
			<id>apptasks</id>
			<phase>pre-integration-test</phase>
			<goals>
				<goal>apptasks</goal>
			</goals>
			<configuration>
				<propertyPrefix>mesos-</propertyPrefix>
			</configuration>
		</execution>
		<execution>
			<id>delete</id>
			<phase>post-integration-test</phase>
			<goals>
				<goal>delete</goal>
			</goals>
		</execution>
	</executions>
</plugin>

By default your template marathon.json should be in the root project directory.