<?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>

	<parent>
		<groupId>org.fenixedu</groupId>
		<artifactId>fenix-framework-project</artifactId>
		<version>3.0.0-beta1</version>
		<relativePath />
	</parent>

	<groupId>com.qubit.solution.fenixedu.build</groupId>
	<artifactId>qub-fenixedu-project</artifactId>
	<packaging>pom</packaging>
	<version>2.2.2</version>


	<name>qub-fenixedu-project</name>

	<properties>
		<version.spotbugs>4.8.4</version.spotbugs>
		<version.spotbugs.plugin>4.8.4.0</version.spotbugs.plugin>
		<version.spotbugs.plugin.sb-contrib>7.6.4</version.spotbugs.plugin.sb-contrib>
		<version.spotbugs.plugin.findsec>1.13.0</version.spotbugs.plugin.findsec>
		<version.checkStyles.plugin>3.4.0</version.checkStyles.plugin>

		<java.compilation.release>17</java.compilation.release>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<version.org.apache.maven.plugins.maven.compiler.plugin>3.8.0</version.org.apache.maven.plugins.maven.compiler.plugin>

		<version.org.apache.maven.plugins.maven.javadoc.plugin>3.1.1</version.org.apache.maven.plugins.maven.javadoc.plugin>

		<version.pt.ist.fenix.framework>3.0.0</version.pt.ist.fenix.framework>
		<version.pt.ist.ff.maven.plugin>${version.pt.ist.fenix.framework}</version.pt.ist.ff.maven.plugin>
		<code.generator.class>pt.ist.fenixframework.backend.jvstm.InMemCodeGenerator</code.generator.class>
		<version.org.apache.maven.plugins.maven.jar.plugin>3.2.0</version.org.apache.maven.plugins.maven.jar.plugin>
		<version.ff.addons>1.0.0</version.ff.addons>
	</properties>

	<profiles>
		<profile>
			<id>static-analysis</id>
			<activation>
				<property>
					<name>static-analysis</name>
				</property>
			</activation>

			<build>
				<plugins>
					<plugin>
						<groupId>com.github.spotbugs</groupId>
						<artifactId>spotbugs-maven-plugin</artifactId>
						<version>${version.spotbugs.plugin}</version>
						<dependencies>
							<dependency>
								<groupId>com.github.spotbugs</groupId>
								<artifactId>spotbugs</artifactId>
								<version>${version.spotbugs}</version>
							</dependency>
						</dependencies>
						<executions>
							<execution>
								<id>run-spotbugs</id>
								<phase>verify</phase>
								<goals>
									<goal>spotbugs</goal>
								</goals>
								<configuration>
									<spotbugsXmlOutputDirectory>
										${project.basedir}</spotbugsXmlOutputDirectory>
									<excludeFilterFile>
										${user.home}/.qub/spotbugs-exclude.xml</excludeFilterFile>
									<maxHeap>2048</maxHeap>
									<plugins>
										<plugin>
											<groupId>com.mebigfatguy.sb-contrib</groupId>
											<artifactId>sb-contrib</artifactId>
											<version>
												${version.spotbugs.plugin.sb-contrib}</version>
										</plugin>
										<plugin>
											<groupId>com.h3xstream.findsecbugs</groupId>
											<artifactId>findsecbugs-plugin</artifactId>
											<version>
												${version.spotbugs.plugin.findsec}</version>
										</plugin>
									</plugins>
								</configuration>
							</execution>
						</executions>
					</plugin>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-checkstyle-plugin</artifactId>
						<version>${version.checkStyles.plugin}</version>
						<executions>
							<execution>
								<id>validate</id>
								<phase>validate</phase>
								<goals>
									<goal>check</goal>
								</goals>
								<configuration>
									<configLocation>
										${user.home}/.qub/google_modified_checks.xml</configLocation>
									<encoding>${project.build.sourceEncoding}</encoding>
									<outputFile>
										${project.basedir}/checkstyle_errors.xml</outputFile>
									<outputFileFormat>xml</outputFileFormat>
									<failsOnError>false</failsOnError>
									<linkXRef>false</linkXRef>
								</configuration>
							</execution>
						</executions>
					</plugin>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-pmd-plugin</artifactId>
						<version>3.13.0</version>
						<executions>
							<execution>
								<id>validate-duplicate-code</id>
								<phase>validate</phase>
								<goals>
									<goal>cpd</goal>
								</goals>
							</execution>
						</executions>
						<configuration>
							<targetDirectory>${project.basedir}</targetDirectory>
							<linkXref>true</linkXref>
							<sourceEncoding>utf-8</sourceEncoding>
							<minimumTokens>100</minimumTokens>
							<targetJdk>17</targetJdk>
							<excludes>
								<exclude>**/*_Base.java</exclude>
							</excludes>
							<excludeRoots>
								<excludeRoot>target/generated-sources/*</excludeRoot>
							</excludeRoots>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>

	<build>
		<resources>
		    <resource>
		        <filtering>false</filtering>
		        <directory>src/main/resources</directory>
		        <excludes>
		            <exclude>**/web-fragment.xml</exclude>
		        </excludes>
		    </resource>
		    <resource>
		        <filtering>true</filtering>
		        <directory>src/main/resources</directory>
		        <includes>
		            <include>**/web-fragment.xml</include>
		        </includes>
		    </resource>
		    <resource>
		        <directory>${basedir}</directory>
		        <includes>
		            <include>RELEASE_NOTES</include>
		        </includes>
		        <targetPath>${project.build.outputDirectory}/META-INF</targetPath>
		    </resource>
		    <resource>
		        <directory>src/main/webapp</directory>
		        <targetPath>META-INF/resources</targetPath>
		    </resource>
		</resources>
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>pt.ist</groupId>
					<artifactId>ff-maven-plugin</artifactId>
					<configuration>
						<sourcesDirectory>src/main/java</sourcesDirectory>
					</configuration>
					<dependencies>
						<dependency>
							<groupId>com.qubit.solution.fenixedu</groupId>
							<artifactId>qub-fenixedu-fenix-framework-addons</artifactId>
							<version>${version.ff.addons}</version>
						</dependency>
					</dependencies>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-compiler-plugin</artifactId>
					<version>
						${version.org.apache.maven.plugins.maven.compiler.plugin}</version>
					<configuration>
						<verbose>false</verbose>
						<release>${java.compilation.release}</release>
						<maxmem>2048</maxmem>
						<meminitial>1024</meminitial>
						<fork>true</fork>
					</configuration>
					<executions>
						<execution>
							<id>default-compile</id>
							<phase>compile</phase>
							<goals>
								<goal>compile</goal>
							</goals>
							<configuration>
								<verbose>false</verbose>
								<fork>true</fork>
								<release>${java.compilation.release}</release>
								<maxmem>2048</maxmem>
								<meminitial>1024</meminitial>
							</configuration>
						</execution>
						<execution>
							<id>default-testCompile</id>
							<phase>test-compile</phase>
							<goals>
								<goal>testCompile</goal>
							</goals>
							<configuration>
								<verbose>false</verbose>
								<fork>true</fork>
								<release>${java.compilation.release}</release>
								<maxmem>2048</maxmem>
								<meminitial>1024</meminitial>
							</configuration>
						</execution>
					</executions>

				</plugin>
			</plugins>
		</pluginManagement>
		<plugins>
			<plugin>
				<groupId>org.jacoco</groupId>
				<artifactId>jacoco-maven-plugin</artifactId>
				<version>0.8.8</version>
				<executions>
					<execution>
						<id>pre-unit-test</id>
						<goals>
							<goal>prepare-agent</goal>
						</goals>
						<configuration>
							<propertyName>argLine</propertyName>
							<destFile>${project.build.directory}/jacoco-ut/jacoco.exec</destFile>
							<excludes>
								<exclude>**/*_Base*</exclude>
								<exclude>com/qubit/**/presentation/**</exclude>>
								<exclude>**/*MetaHolder*</exclude>
								<exclude>**/ValueTypeSerializer*</exclude>
								<exclude>**/CurrentBackEndId*</exclude>
								<exclude>org/openapitools/**</exclude>
							</excludes>
						</configuration>
					</execution>
					<execution>
						<id>post-unit-test</id>
						<phase>test</phase>
						<goals>
							<goal>report</goal>
						</goals>
						<configuration>
							<outputDirectory>${project.build.directory}/jacoco-ut</outputDirectory>
							<dataFile>${project.build.directory}/jacoco-ut/jacoco.exec</dataFile>
							<formats>
								<format>XML</format>
								<format>HTML</format>
							</formats>
							<excludes>
								<exclude>**/*_Base*</exclude>
								<exclude>com/qubit/**/presentation/**</exclude>
								<exclude>**/*MetaHolder*</exclude>
								<exclude>**/ValueTypeSerializer*</exclude>
								<exclude>**/CurrentBackEndId*</exclude>
								<exclude>org/openapitools/**</exclude>
							</excludes>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
	<dependencies>
		<dependency>
			<groupId>com.qubit.solution.fenixedu</groupId>
			<artifactId>qub-fenixedu-fenix-framework-addons</artifactId>
			<version>${version.ff.addons}</version>
		</dependency>
	</dependencies>


	<repositories>
		<repository>
			<id>qubIT-oss</id>
			<url>https://repository-oss.omnis.cloud/nexus/repository/releases/</url>
		</repository>
		<repository>
			<id>ulisboa-repo</id>
			<url>http://nexjen.ulisboa.pt/nexus/content/groups/public/</url>
		</repository>
		<repository>
			<id>qubIT-repo-public</id>
			<url>https://repository.qub-it.com/nexus/content/groups/public</url>
		</repository>
		<repository>
			<id>qubIT-repo</id>
			<url>https://repository.qub-it.com/nexus/content/groups/qubITRepo</url>
		</repository>
	</repositories>

	<pluginRepositories>
		<pluginRepository>
			<id>qubIT-oss</id>
			<url>https://repository-oss.omnis.cloud/nexus/repository/releases/</url>
		</pluginRepository>
	</pluginRepositories>

	<distributionManagement>
		<repository>
			<id>qubIT-oss</id>
			<url>https://repository-oss.omnis.cloud/nexus/repository/releases/</url>
		</repository>
		<snapshotRepository>
			<id>qubIT-oss</id>
			<url>https://repository-oss.omnis.cloud/nexus/repository/snapshots/</url>
		</snapshotRepository>
	</distributionManagement>

</project>
