<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

	<modelVersion>4.0.0</modelVersion>
	<artifactId>jans-config-api-server</artifactId>
	<name>jans-config-api-server</name>
	<packaging>war</packaging>

	<parent>
		<groupId>io.jans</groupId>
		<artifactId>jans-config-api-parent</artifactId>
		<version>2.1.0</version>
	</parent>

	<prerequisites>
		<maven>${maven.min-version}</maven>
	</prerequisites>

	<dependencies>

		<!-- jans -->
		<dependency>
			<groupId>io.jans</groupId>
			<artifactId>jans-core-util</artifactId>
		</dependency>
		<dependency>
			<groupId>io.jans</groupId>
			<artifactId>jans-core-model</artifactId>
		</dependency>
		<dependency>
			<groupId>io.jans</groupId>
			<artifactId>jans-core-message</artifactId>
		</dependency>
		<dependency>
			<groupId>io.jans</groupId>
			<artifactId>jans-auth-common</artifactId>
			<exclusions>
				<exclusion>
					<groupId>org.bouncycastle</groupId>
					<artifactId>bcprov-jdk15on</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>io.jans</groupId>
			<artifactId>jans-core-server</artifactId>
		</dependency>
		<dependency>
			<groupId>io.jans</groupId>
			<artifactId>jans-core-service</artifactId>
		</dependency>
		<dependency>
			<groupId>io.jans</groupId>
			<artifactId>jans-auth-client</artifactId>
		</dependency>
		<dependency>
			<groupId>io.jans</groupId>
			<artifactId>jans-config-api-common</artifactId>
		</dependency>
		<dependency>
			<groupId>io.jans</groupId>
			<artifactId>jans-config-api-shared</artifactId>
		</dependency>
		<dependency>
			<groupId>io.jans</groupId>
			<artifactId>jans-core-timer-weld</artifactId>
		</dependency>
	
		<dependency>
			<groupId>io.jans</groupId>
			<artifactId>agama-model</artifactId>
		</dependency>
		<dependency>
			<groupId>io.jans</groupId>
			<artifactId>agama-transpiler</artifactId>
		</dependency>

		<!-- Weld -->
		<dependency>
			<groupId>jakarta.enterprise</groupId>
			<artifactId>jakarta.enterprise.cdi-api</artifactId>
		</dependency>

		<!-- Microprofile -->
		<dependency>
			<groupId>org.eclipse.microprofile.config</groupId>
			<artifactId>microprofile-config-api</artifactId>
		</dependency>
		<dependency>
			<groupId>org.eclipse.microprofile.health</groupId>
			<artifactId>microprofile-health-api</artifactId>
		</dependency>
		<dependency>
			<groupId>org.eclipse.microprofile.metrics</groupId>
			<artifactId>microprofile-metrics-api</artifactId>
		</dependency>
		<dependency>
			<groupId>org.eclipse.microprofile.rest.client</groupId>
			<artifactId>microprofile-rest-client-api</artifactId>
		</dependency>

		<dependency>
			<groupId>io.smallrye.config</groupId>
			<artifactId>smallrye-config</artifactId>
		</dependency>

		<dependency>
			<groupId>io.smallrye</groupId>
			<artifactId>smallrye-metrics</artifactId>
		</dependency>
		

		<!-- Validation -->
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-validator</artifactId>
		</dependency>
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-validator-cdi</artifactId>
		</dependency>
		<!-- RestEasy -->
		<dependency>
			<groupId>org.jboss.resteasy</groupId>
			<artifactId>resteasy-cdi</artifactId>
		</dependency>
		<dependency>
			<groupId>org.jboss.resteasy</groupId>
			<artifactId>resteasy-client</artifactId>
		</dependency>
		<dependency>
			<groupId>org.jboss.resteasy</groupId>
			<artifactId>resteasy-servlet-initializer</artifactId>
		</dependency>
		<dependency>
			<groupId>org.jboss.resteasy</groupId>
			<artifactId>resteasy-jaxb-provider</artifactId>
		</dependency>
		<dependency>
			<groupId>org.jboss.resteasy</groupId>
			<artifactId>resteasy-jackson2-provider</artifactId>
		</dependency>
		<dependency>
			<groupId>org.jboss.resteasy</groupId>
			<artifactId>resteasy-json-p-provider</artifactId>
		</dependency>
		<dependency>
			<groupId>org.jboss.resteasy</groupId>
			<artifactId>resteasy-multipart-provider</artifactId>
		</dependency>

		<!-- Jakarta -->
		<dependency>
			<groupId>jakarta.annotation</groupId>
			<artifactId>jakarta.annotation-api</artifactId>
		</dependency>
		<dependency>
			<groupId>jakarta.inject</groupId>
			<artifactId>jakarta.inject-api</artifactId>
		</dependency>
		<dependency>
			<groupId>jakarta.servlet</groupId>
			<artifactId>jakarta.servlet-api</artifactId>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>jakarta.validation</groupId>
			<artifactId>jakarta.validation-api</artifactId>
		</dependency>
		<dependency>
			<groupId>jakarta.ws.rs</groupId>
			<artifactId>jakarta.ws.rs-api</artifactId>
		</dependency>


		<dependency>
		    <groupId>jakarta.servlet.jsp</groupId>
		    <artifactId>jakarta.servlet.jsp-api</artifactId>
		</dependency>


		<!-- Quartz -->
		<dependency>
			<groupId>org.quartz-scheduler</groupId>
			<artifactId>quartz</artifactId>
		</dependency>

		<!-- Testing -->
		<dependency>
			<groupId>io.rest-assured</groupId>
			<artifactId>rest-assured</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.testng</groupId>
			<artifactId>testng</artifactId>
		    <scope>test</scope>
		</dependency>

		<!-- Others -->
		<dependency>
			<groupId>commons-beanutils</groupId>
			<artifactId>commons-beanutils</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-collections4</artifactId>
		</dependency>
		<dependency>
			<groupId>org.glassfish</groupId>
			<artifactId>jakarta.json</artifactId>
		</dependency>

		<!-- jetty -->
		<dependency>
			<groupId>org.eclipse.jetty</groupId>
			<artifactId>jetty-deploy</artifactId>
		</dependency>

		<!-- Jython -->
		<dependency>
			<groupId>io.jans</groupId>
			<artifactId>jython-standalone</artifactId>
		</dependency>

		<!-- Swagger -->
		<dependency>
			<groupId>io.swagger.core.v3</groupId>
			<artifactId>swagger-core-jakarta</artifactId>
		</dependency>
		<dependency>
			<groupId>io.swagger.core.v3</groupId>
			<artifactId>swagger-models-jakarta</artifactId>
			<version>${swagger-models-jakarta}</version>
		</dependency>
	</dependencies>

	<build>
		<finalName>jans-config-api</finalName>

		<filters>
			<filter>../profiles/${cfg}/config-api-test.properties</filter>
		</filters>

        <testResources>
            <testResource>
                <directory>src/test/resources</directory>
                <filtering>true</filtering>
            </testResource>
        </testResources>

		<resources>
			<resource>
				<directory>src/main/resources</directory>
				<filtering>true</filtering>
				<includes>
					<include>**/*.xml</include>
					<include>**/*.properties</include>
					<include>**/*.json</include>
					<include>META-INF/services/*.*</include>
				</includes>
			</resource>
		</resources>

		<plugins>

			<!-- swagger -->
			<plugin>
				<groupId>io.swagger.core.v3</groupId>
				<artifactId>swagger-maven-plugin-jakarta</artifactId>
				<version>${swagger-maven-plugin-jakarta}</version>
				<executions>
					<execution>
						<configuration>
							<alwaysResolveAppPath>true</alwaysResolveAppPath>
							<outputFileName>jans-config-api-swagger</outputFileName>
							<contextId>${project.artifactId}</contextId>
							<prettyPrint>true</prettyPrint>
							<resourcePackages>
								<package>io.jans.configapi.rest</package>			
							</resourcePackages>
							<filterClass/>
							
						</configuration>
					</execution>
				</executions>
				<dependencies>
					<dependency>
						<groupId>io.swagger.core.v3</groupId>
						<artifactId>swagger-models-jakarta</artifactId>
						<version>${swagger-models-jakarta}</version>
					</dependency>
				</dependencies>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-install-plugin</artifactId>
				<executions>
					<execution>
						<id>install-jar</id>
						<phase>install</phase>
						<goals>
							<goal>install-file</goal>
						</goals>
						<configuration>
							<packaging>jar</packaging>
							<artifactId>${project.artifactId}</artifactId>
							<groupId>${project.groupId}</groupId>
							<version>${project.version}</version>
							<file>
								${project.build.directory}/${project.build.finalName}.jar
							</file>
						</configuration>
					</execution>
					<execution>
						<id>install-war</id>
						<phase>install</phase>
						<goals>
							<goal>install-file</goal>
						</goals>
						<configuration>
							<packaging>war</packaging>
							<artifactId>${project.artifactId}</artifactId>
							<groupId>${project.groupId}</groupId>
							<version>${project.version}</version>
							<file>
								${project.build.directory}/${project.build.finalName}.war
							</file>
						</configuration>
					</execution>
				</executions>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<executions>
					<execution>
						<id>make-a-jar</id>
						<phase>compile</phase>
						<goals>
							<goal>jar</goal>
						</goals>
					</execution>
					<execution>
						<goals>
							<goal>test-jar</goal>
						</goals>
					</execution>
				</executions>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<configuration>
					<suiteXmlFiles>
                        <suiteXmlFile>target/test-classes/testng.xml</suiteXmlFile>
                    </suiteXmlFiles>
				</configuration>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-war-plugin</artifactId>
				<configuration>
					<failOnMissingWebXml>false</failOnMissingWebXml>
					<archive>
						<manifest>
							<addDefaultImplementationEntries>true
							</addDefaultImplementationEntries>
						</manifest>
						<manifestEntries>
							<Implementation-Build>${buildNumber}</Implementation-Build>
						</manifestEntries>
					</archive>

					<webResources>
						<resource>
							<directory>src/main/webapp</directory>
							<filtering>true</filtering>
							<includes>
								<include>**/*.xml</include>
								<include>**/*.properties</include>
							</includes>
						</resource>
						<resource>
							<directory>src/main/webapp</directory>
							<filtering>false</filtering>
							<includes>
								<include>**/*.*</include>
							</includes>
						</resource>
					</webResources>
				</configuration>
			</plugin>

			<!-- Build number plugin -->
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>buildnumber-maven-plugin</artifactId>
				<executions>
					<execution>
						<phase>validate</phase>
						<goals>
							<goal>create</goal>
						</goals>
					</execution>
				</executions>
				<configuration>
					<doCheck>false</doCheck>
					<doUpdate>false</doUpdate>
				</configuration>
			</plugin>

			<!-- Jetty plugin -->
			<plugin>
				<groupId>org.eclipse.jetty</groupId>
				<artifactId>jetty-maven-plugin</artifactId>
				<configuration>
					<webAppConfig>
						<descriptor>${project.build.directory}/${project.build.finalName}/WEB-INF/web.xml
						</descriptor>
						<contextPath>/jans</contextPath>
					</webAppConfig>

					<webAppSourceDirectory>${project.build.directory}/${project.build.finalName}
					</webAppSourceDirectory>
					<scanIntervalSeconds>3</scanIntervalSeconds>
				</configuration>
			</plugin>



		</plugins>
	</build>

	<profiles>
		<profile>
			<id>webapp</id>
			<activation>
				<property>
					<name>!webapp.disable</name>
				</property>
			</activation>

			<dependencies>
				<dependency>
					<groupId>jakarta.enterprise</groupId>
					<artifactId>jakarta.enterprise.cdi-api</artifactId>
				</dependency>


				<dependency>
					<groupId>org.glassfish</groupId>
					<artifactId>jakarta.el</artifactId>
				</dependency>

				<dependency>
					<groupId>org.jboss.weld.servlet</groupId>
					<artifactId>weld-servlet-core</artifactId>
				</dependency>
				<dependency>
					<groupId>org.jboss.weld</groupId>
					<artifactId>weld-core-impl</artifactId>
				</dependency>

				<!-- Test: Embedded Jetty -->
				<dependency>
					<groupId>org.jboss.arquillian.container</groupId>
					<artifactId>arquillian-jetty-embedded-9</artifactId>
					<scope>test</scope>
				</dependency>
				<dependency>
					<groupId>org.eclipse.jetty</groupId>
					<artifactId>jetty-webapp</artifactId>
					<scope>test</scope>
				</dependency>
				<dependency>
					<groupId>org.eclipse.jetty</groupId>
					<artifactId>jetty-deploy</artifactId>
					<scope>test</scope>
				</dependency>
				<dependency>
					<groupId>org.eclipse.jetty</groupId>
					<artifactId>jetty-annotations</artifactId>
					<scope>test</scope>
				</dependency>
				<dependency>
					<groupId>org.eclipse.jetty</groupId>
					<artifactId>jetty-plus</artifactId>
					<scope>test</scope>
				</dependency>
				<dependency>
					<groupId>org.bitbucket.b_c</groupId>
					<artifactId>jose4j</artifactId>
				</dependency>
			</dependencies>

			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-war-plugin</artifactId>
						<configuration>
							<archive>
								<manifest>
									<addDefaultImplementationEntries>true
									</addDefaultImplementationEntries>
								</manifest>
								<manifestEntries>
									<Implementation-Build>${buildNumber}</Implementation-Build>
									<Build-Branch>${git.branch}</Build-Branch>
								</manifestEntries>
							</archive>

							<webResources>
								<resource>
									<directory>src/main/webapp</directory>
									<filtering>true</filtering>
									<includes>
										<include>**/*.xml</include>
										<include>**/*.properties</include>
									</includes>
								</resource>
								<resource>
									<directory>src/main/webapp</directory>
									<filtering>false</filtering>
									<includes>
										<include>**/*.*</include>
									</includes>
								</resource>
							</webResources>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>

		<profile>
			<id>webapp-jetty</id>
			<activation>
				<property>
					<name>!jetty.disable</name>
				</property>
			</activation>

			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-war-plugin</artifactId>
						<configuration>
							<webResources>
								<resource>
									<directory>src/main/webapp</directory>
									<filtering>true</filtering>
									<includes>
										<include>**/*.xml</include>
										<include>**/*.properties</include>
									</includes>
								</resource>
								<resource>
									<directory>src/main/webapp</directory>
									<filtering>false</filtering>
									<includes>
										<include>**/*.*</include>
									</includes>
								</resource>

								<resource>
									<directory>src/main/webapp-jetty</directory>
									<filtering>true</filtering>
								</resource>
							</webResources>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>

		<profile>
			<id>webapp-tomcat</id>
			<activation>
				<property>
					<name>tomcat.enable</name>
				</property>
			</activation>

			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-war-plugin</artifactId>
						<configuration>
							<webResources>
								<resource>
									<directory>src/main/webapp</directory>
									<filtering>true</filtering>
									<includes>
										<include>**/*.xml</include>
										<include>**/*.properties</include>
									</includes>
								</resource>
								<resource>
									<directory>src/main/webapp</directory>
									<filtering>false</filtering>
									<includes>
										<include>**/*.*</include>
									</includes>
								</resource>

								<resource>
									<directory>src/main/webapp-tomcat</directory>
									<filtering>true</filtering>
								</resource>
							</webResources>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>

		<profile>
			<id>jetty-embedded</id>
			<activation>
				<activeByDefault>true</activeByDefault>
				<property>
					<name>jetty.embedded</name>
				</property>
			</activation>
		</profile>

		
	</profiles>
</project>