ranyeli
10/1/2017 - 1:50 AM

Deploy SpringBoot jar

How to deploy a jar file to heroku

1.  Add the following to your pom.xml:

    <?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.project</groupId>
	<artifactId>invoiceBackend</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>invoiceBackend</name>
	<description>Demo project for Spring Boot</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.6.RELEASE</version>
		<relativePath /> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
		<full-artifact-name>target/${project.artifactId}-${project.version}.jar</full-artifact-name> <!-- add this -->
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
			<!-- <version>1.5.6.RELEASE</version> -->
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-tomcat</artifactId>
			<!-- <scope>provided</scope> --> <!-- this should be commented only if we are deploying a jar file -->
		</dependency>

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin> <!-- add everything withing this plugin -->
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<executions>
					<execution>
						<goals>
							<goal>repackage</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin> <!-- add everything withing this plugin -->
				<groupId>com.heroku.sdk</groupId>
				<artifactId>heroku-maven-plugin</artifactId>
				<version>1.2.0</version>
				<configuration>
					<appName>invoice-backend</appName> <!-- your app name on heroku -->
					<includeTarget>false</includeTarget>
					<includes>
						<include>${basedir}/${full-artifact-name}</include>
					</includes>
					<processTypes>
						<web>java $JAVA_OPTS -jar ${full-artifact-name}</web>
					</processTypes>
				</configuration>

			</plugin>
		</plugins>
	</build>


</project>

<!-- Note: make sure you have all dependencies like sql engine and configuration before proceeding -->

2.  Run the command "mvn package" to create the jar file to be deploy

3.  Login to your heroku account on the terminal

4.  Run the command "mvn heroku:deploy" to deploy the jar file to heroku