<?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.                                              *
 ***************************************************************************************************************************
-->
<!--
	This project is meant to be used as a starting point for developers to use in creating their own REST microservices.
	It creates a parent REST interface on port 10000 with a single child hello-world resource.
	This POM is likewise meant to be used as a starting point for developers. It creates an uber-jar
	to run the microserice from the command line. Copy the jar as well as the .cfg file and start it
	with java -jar juneau-microservice-template-1.0.0.jar microservice.cfg
	The group/artifact/version information is meant to be overwritten by developers to match their own needs.
-->
<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/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>org.apache.juneau</groupId>
	<artifactId>juneau-examples-rest</artifactId>
	<name>Apache Juneau REST Examples</name>
	<version>${version}</version>
	<description>Sample code packaged as a microservice.</description>

	<properties>
		<encoding>UTF-8</encoding>
		
		<!-- Java 8 required because Jetty requires it. -->
		<maven.compiler.source>1.8</maven.compiler.source>
		<maven.compiler.target>1.8</maven.compiler.target>
	</properties>


	<dependencies>
		<dependency>
			<groupId>org.apache.juneau</groupId>
			<artifactId>juneau-microservice-server</artifactId>
			<version>${version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.jena</groupId>
			<artifactId>jena-core</artifactId>
			<version>${jena.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.derby</groupId>
			<artifactId>derby</artifactId>
			<version>${derby.version}</version>
		</dependency>
		<dependency>
			<groupId>commons-fileupload</groupId>
			<artifactId>commons-fileupload</artifactId>
			<version>${fileupload.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.httpcomponents</groupId>
			<artifactId>httpmime</artifactId>
			<version>${httpclient.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.juneau</groupId>
			<artifactId>juneau-rest-server</artifactId>
			<version>${version}</version>
			<type>test-jar</type>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>${junit.version}</version>
		</dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.0.9.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>5.0.9.Final</version>
        </dependency>
	</dependencies>

	<build>
		<plugins>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-source-plugin</artifactId>
				<executions>
					<execution>
						<id>attach-sources</id>
						<phase>verify</phase>
						<goals>
							<goal>jar-no-fork</goal>
						</goals>
					</execution>
				</executions>
			</plugin>

			<!-- This runs the _TestSuite class. You must run within the testsuite 
				so the REST microservice is started for the tests. -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<configuration>
					<includes>
						<include>**/_TestSuite.java</include>
					</includes>
				</configuration>
			</plugin>

			<!-- This packages the samples into an executable jar. Use: java -jar 
				juneau-examples-uber.jar Needs the examples.cfg copied below in the same 
				directory. -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-shade-plugin</artifactId>
				<!--version>2.4.3</version-->
				<configuration>
					<createDependencyReducedPom>false</createDependencyReducedPom>
					<minimizeJar>false</minimizeJar>
					<transformers>
						<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
							<manifestEntries>
								<Main-Class>org.apache.juneau.microservice.RestMicroservice</Main-Class>
								<Rest-Resources>org.apache.juneau.examples.rest.RootResources</Rest-Resources>
								<Main-Config>examples.cfg</Main-Config>
							</manifestEntries>
						</transformer>
					</transformers>
				</configuration>
				<executions>
					<execution>
						<phase>package</phase>
						<goals>
							<goal>shade</goal>
						</goals>
					</execution>
				</executions>
			</plugin>

			<!-- Attaches the examples.cfg to this artifact -->
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>build-helper-maven-plugin</artifactId>
				<version>1.12</version>
				<executions>
					<execution>
						<id>attach-artifacts</id>
						<phase>package</phase>
						<goals>
							<goal>attach-artifact</goal>
						</goals>
						<configuration>
							<artifacts>
								<artifact>
									<file>examples.cfg</file>
									<type>cfg</type>
									<classifier>samples</classifier>
								</artifact>
							</artifacts>
						</configuration>
					</execution>
				</executions>
			</plugin>

			<plugin>
				<artifactId>maven-assembly-plugin</artifactId>
				<executions>
					<execution>
						<id>juneau-assembly</id>
						<phase>package</phase>
						<goals>
							<goal>single</goal>
						</goals>
						<configuration>
							<finalName>juneau-examples-rest-${version}</finalName>
							<descriptors>
								<descriptor>src/assembly/bin.xml</descriptor>
							</descriptors>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>
