<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>de.foellix</groupId>
	<artifactId>AQL-System</artifactId>
	<version>2.0.0</version>
	<packaging>jar</packaging>

	<name>AQL-System</name>
	<description>Android App Analysis Query Language - System</description>
	<url>https://FoelliX.github.io/AQL-System</url>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<javafx.version>18-ea+4</javafx.version>
		<jackson.version>2.12.4</jackson.version>
	</properties>

	<profiles>
		<profile>
			<id>release</id>
			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-source-plugin</artifactId>
						<version>3.2.1</version>
						<executions>
							<execution>
								<id>attach-sources</id>
								<goals>
									<goal>jar-no-fork</goal>
								</goals>
							</execution>
						</executions>
					</plugin>

					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-javadoc-plugin</artifactId>
						<version>3.3.1</version>
						<executions>
							<execution>
								<id>attach-javadocs</id>
								<goals>
									<goal>jar</goal>
								</goals>
							</execution>
						</executions>
					</plugin>

					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-gpg-plugin</artifactId>
						<version>1.6</version>
						<executions>
							<execution>
								<id>sign-artifacts</id>
								<phase>verify</phase>
								<goals>
									<goal>sign</goal>
								</goals>
							</execution>
						</executions>
					</plugin>

					<plugin>
						<groupId>org.sonatype.plugins</groupId>
						<artifactId>nexus-staging-maven-plugin</artifactId>
						<version>1.6.8</version>
						<extensions>true</extensions>
						<configuration>
							<serverId>ossrh</serverId>
							<nexusUrl>https://oss.sonatype.org/</nexusUrl>
							<autoReleaseAfterClose>true</autoReleaseAfterClose>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>
		<profile>
			<id>assembly</id>
			<activation>
				<activeByDefault>true</activeByDefault>
			</activation>
			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-assembly-plugin</artifactId>
						<version>3.3.0</version>
						<executions>
							<execution>
								<phase>package</phase>
								<goals>
									<goal>single</goal>
								</goals>
								<configuration>
									<archive>
										<manifest>
											<mainClass>
												de.foellix.aql.ui.cli.CommandLineInterface
											</mainClass>
										</manifest>
									</archive>
									<descriptorRefs>
										<descriptorRef>jar-with-dependencies</descriptorRef>
									</descriptorRefs>
									<outputDirectory>${project.basedir}/target/build</outputDirectory>
									<finalName>${project.name}-${project.version}</finalName>
									<appendAssemblyId>false</appendAssemblyId>
								</configuration>
							</execution>
						</executions>
					</plugin>

					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-antrun-plugin</artifactId>
						<version>3.0.0</version>
						<executions>
							<execution>
								<id>create-empty-directories</id>
								<phase>package</phase>
								<goals>
									<goal>run</goal>
								</goals>
								<configuration>
									<target>
										<mkdir dir="${basedir}/target/build/answers" />
										<mkdir dir="${basedir}/target/build/queries" />
										<mkdir dir="${basedir}/target/build/data/storage" />
										<chmod file="${basedir}/target/build/flushMemory.sh" perm="+x" type="file" />
										<chmod file="${basedir}/target/build/killpid.sh" perm="+x" type="file" />
									</target>
								</configuration>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>

			<dependencies>
				<!-- https://mvnrepository.com/artifact/org.openjfx/javafx-web (for Linux, Windows and MaxOS) -->
				<dependency>
					<groupId>org.openjfx</groupId>
					<artifactId>javafx-web</artifactId>
					<version>${javafx.version}</version>
					<classifier>linux</classifier>
				</dependency>
				<dependency>
					<groupId>org.openjfx</groupId>
					<artifactId>javafx-web</artifactId>
					<version>${javafx.version}</version>
					<classifier>win</classifier>
				</dependency>
				<dependency>
					<groupId>org.openjfx</groupId>
					<artifactId>javafx-web</artifactId>
					<version>${javafx.version}</version>
					<classifier>mac</classifier>
				</dependency>
				<!-- https://mvnrepository.com/artifact/org.openjfx/javafx-graphics (for Linux, Windows and MaxOS) -->
				<dependency>
					<groupId>org.openjfx</groupId>
					<artifactId>javafx-graphics</artifactId>
					<version>${javafx.version}</version>
					<classifier>linux</classifier>
				</dependency>
				<dependency>
					<groupId>org.openjfx</groupId>
					<artifactId>javafx-graphics</artifactId>
					<version>${javafx.version}</version>
					<classifier>win</classifier>
				</dependency>
				<dependency>
					<groupId>org.openjfx</groupId>
					<artifactId>javafx-graphics</artifactId>
					<version>${javafx.version}</version>
					<classifier>mac</classifier>
				</dependency>
			</dependencies>
		</profile>
	</profiles>

	<build>
		<defaultGoal>clean install</defaultGoal>
		<directory>target</directory>

		<outputDirectory>target/classes</outputDirectory>
		<sourceDirectory>src</sourceDirectory>
		<testSourceDirectory>testsrc</testSourceDirectory>

		<resources>
			<resource>
				<directory>${project.basedir}</directory>
				<includes>
					<include>tool.properties</include>
				</includes>
				<filtering>true</filtering>
			</resource>
			<resource>
				<directory>${project.basedir}</directory>
				<includes>
					<include>manpage</include>
				</includes>
			</resource>
			<resource>
				<directory>${project.basedir}</directory>
				<includes>
					<include>manual.pdf</include>
				</includes>
				<targetPath>${project.basedir}/target/build</targetPath>
			</resource>
			<resource>
				<directory>${project.basedir}/mvn</directory>
				<includes>
					<include>flushMemory.sh</include>
					<include>killpid.sh</include>
					<include>*.xml</include>
				</includes>
				<targetPath>${project.basedir}/target/build</targetPath>
			</resource>
			<resource>
				<directory>${project.basedir}/data</directory>
				<includes>
					<include>**/*</include>
				</includes>
				<excludes>
					<exclude>storage/**/*</exclude>
					<exclude>temp/**/*</exclude>
					<exclude>gui/web/temp/*</exclude>
					<exclude>gui/config.properties</exclude>
					<exclude>**/*.ser</exclude>
					<exclude>**/*.zip</exclude>
					<exclude>**/*.psd</exclude>
					<exclude>android.jar</exclude>
				</excludes>
				<targetPath>${project.basedir}/target/build/data</targetPath>
			</resource>
		</resources>

		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.8.1</version>
				<configuration>
					<source>17</source>
					<target>17</target>
				</configuration>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>2.22.2</version>
				<configuration>
					<excludedGroups>requiresBuild, systemIsSetup, requiresExternal, guiAvailable, externalDownload</excludedGroups>
				</configuration>
			</plugin>
		</plugins>
	</build>

	<dependencies>
		<!-- https://mvnrepository.com/artifact/org.soot-oss/soot -->
		<dependency>
			<groupId>org.soot-oss</groupId>
			<artifactId>soot</artifactId>
			<version>4.2.1</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java -->
		<dependency>
			<groupId>com.google.protobuf</groupId>
			<artifactId>protobuf-java</artifactId>
			<version>3.17.3</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.fxmisc.richtext/richtextfx -->
		<dependency>
			<groupId>org.fxmisc.richtext</groupId>
			<artifactId>richtextfx</artifactId>
			<version>0.10.5</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>8.0.26</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>${jackson.version}</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-core</artifactId>
			<version>${jackson.version}</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-annotations</artifactId>
			<version>${jackson.version}</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/net.dongliu/apk-parser -->
		<dependency>
			<groupId>net.dongliu</groupId>
			<artifactId>apk-parser</artifactId>
			<version>2.6.10</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.fusesource.jansi/jansi -->
		<dependency>
			<groupId>org.fusesource.jansi</groupId>
			<artifactId>jansi</artifactId>
			<version>2.3.4</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/com.konghq/unirest-java -->
		<dependency>
			<groupId>com.konghq</groupId>
			<artifactId>unirest-java</artifactId>
			<version>3.11.12</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/javax.ws.rs/javax.ws.rs-api -->
		<dependency>
			<groupId>javax.ws.rs</groupId>
			<artifactId>javax.ws.rs-api</artifactId>
			<version>2.1.1</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter -->
		<dependency>
			<groupId>org.junit.jupiter</groupId>
			<artifactId>junit-jupiter</artifactId>
			<version>5.8.1</version>
			<scope>test</scope>
		</dependency>
		<!-- https://mvnrepository.com/artifact/guru.nidi/graphviz-java-all-j2v8 -->
		<dependency>
			<groupId>guru.nidi</groupId>
			<artifactId>graphviz-java-all-j2v8</artifactId>
			<version>0.18.1</version>
		</dependency>

		<!-- Migration to Java > 8 -->
		<!-- https://mvnrepository.com/artifact/org.openjfx/javafx-controls -->
		<dependency>
			<groupId>org.openjfx</groupId>
			<artifactId>javafx-controls</artifactId>
			<version>${javafx.version}</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.openjfx/javafx-web (for local OS) -->
		<dependency>
			<groupId>org.openjfx</groupId>
			<artifactId>javafx-web</artifactId>
			<version>${javafx.version}</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.openjfx/javafx-graphics (for local OS) -->
		<dependency>
			<groupId>org.openjfx</groupId>
			<artifactId>javafx-graphics</artifactId>
			<version>${javafx.version}</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/javax.xml.bind/jaxb-api -->
		<dependency>
			<groupId>javax.xml.bind</groupId>
			<artifactId>jaxb-api</artifactId>
			<version>2.3.1</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.glassfish.jaxb/jaxb-runtime -->
		<dependency>
			<groupId>org.glassfish.jaxb</groupId>
			<artifactId>jaxb-runtime</artifactId>
			<version>2.3.1</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/de.foellix/FoelliXJFX -->
		<dependency>
			<groupId>de.foellix</groupId>
			<artifactId>FoelliXJFX</artifactId>
			<version>1.0.0</version>
		</dependency>
	</dependencies>

	<developers>
		<developer>
			<name>Felix Pauck</name>
			<email>my@FoelliX.de</email>
			<organization>FoelliX.de</organization>
			<organizationUrl>https://FoelliX.de</organizationUrl>
		</developer>
	</developers>

	<scm>
		<connection>scm:git:git://github.com/FoelliX/AQL-System.git</connection>
		<developerConnection>scm:git:ssh://github.com:FoelliX/AQL-System.git</developerConnection>
		<url>http://github.io/FoelliX/AQL-System</url>
	</scm>

	<licenses>
		<license>
			<name>GNU General Public License v3.0</name>
			<url>https://www.gnu.org/licenses/gpl-3.0.txt</url>
		</license>
	</licenses>

	<distributionManagement>
		<snapshotRepository>
			<id>ossrh</id>
			<url>https://oss.sonatype.org/content/repositories/snapshots</url>
		</snapshotRepository>
		<repository>
			<id>ossrh</id>
			<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
		</repository>
	</distributionManagement>
</project>