<?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.codehaus.mojo</groupId>
		<artifactId>mojo-parent</artifactId>
		<version>50</version>
	</parent>

	<groupId>io.starter</groupId>
	<artifactId>aspectj-maven-plugin</artifactId>
	<version>1.12.9</version>
	<packaging>maven-plugin</packaging>

	<scm>
		<connection>scm:git:https://github.com/StarterInc/aspectj-maven-plugin.git</connection>
		<developerConnection>scm:git:ssh://git@github.com/StarterInc/aspectj-maven-plugin.git</developerConnection>
		<url>https://github.com/StarterInc/aspectj-maven-plugin</url>
		<tag>aspectj-maven-plugin-1.12.9</tag>
	</scm>

	<name>Starter Inc Fork of Mojo's AspectJ Maven Plugin</name>
	<description>
        Handles AspectJ usage within Maven.
        Functionality provided is: weaving of aspects (or existing aspects from libraries) with the
        test and/or main classes, weaving of pre-existing jars and ajdoc reporting.
  </description>
	<inceptionYear>2018</inceptionYear>
	<properties>
		<aspectjVersion>1.9.4</aspectjVersion>
		<mavenVersion>3.0.5</mavenVersion>
		<doxiaVersion>1.8</doxiaVersion>
		<mojo.java.target>1.8</mojo.java.target> <!-- aspectJ > 1.8.13 is JDK 1.8 minimum -->
		<!-- work around until it is correctly fixed at top parent -->
		<scmpublish.content>${project.build.directory}/staging/aspectj-maven-plugin</scmpublish.content>
	</properties>

	<prerequisites>
		<maven>${mavenVersion}</maven>
	</prerequisites>

	<issueManagement>
		<system>GitHub</system>
		<url>https://github.com/StarterInc/aspectj-maven-plugin/issues/</url>
	</issueManagement>

	<distributionManagement>
		<snapshotRepository>
			<id>sonatype-snapshot</id>
			<url>https://oss.sonatype.org/content/repositories/snapshots</url>
		</snapshotRepository>
		<repository>
			<id>sonatype-release</id>
			<url>https://oss.sonatype.org/service/local/staging/deploy/maven2</url>
		</repository>
	</distributionManagement>

	<developers>
		<developer>
			<id>kaare</id>
			<name>Kaare Nilsen</name>
			<email>kaare.nilsen@gmail.com</email>
			<organization>Arktekk</organization>
			<organizationUrl>http://arktekk.no</organizationUrl>
			<roles>
				<role>Java Developer</role>
			</roles>
			<timezone>+1</timezone>
		</developer>
		<developer>
			<name>Lennart Jörelid</name>
			<email>lj@jguru.se</email>
			<organization>jGuru Europe AB</organization>
			<roles>
				<role>Java Developer</role>
			</roles>
			<timezone>+1</timezone>
		</developer>
	</developers>
	<contributors>
		<contributor>
			<name>Thor Age Eldby</name>
			<email>tel@objectnet.no</email>
			<roles>
				<role>Java Developer</role>
			</roles>
			<timezone>+1</timezone>
		</contributor>
		<contributor>
			<name>David J. M. Karlsen</name>
			<email>david@davidkarlsen.com</email>
			<organization>davidkarlsen.com</organization>
			<organizationUrl>http://www.davidkarlsen.com</organizationUrl>
			<roles>
				<role>Java Developer</role>
			</roles>
			<timezone>+1</timezone>
		</contributor>
		<contributor>
			<name>Marvin Froeder</name>
			<email>velo.br@gmail.com</email>
			<timezone>-3</timezone>
		</contributor>
		<contributor>
			<name>Krzysztof Debski</name>
			<email>kdebski85@gmail.com</email>
			<timezone>+1</timezone>
		</contributor>
		<contributor>
			<name>Nicholas Wong</name>
			<email>nickwongdev@gmail.com</email>
			<timezone>America/LosAngeles</timezone>
		</contributor>
		<contributor>
			<name>John McMahon</name>
			<email>john@starter.io</email>
			<timezone>America/LosAngeles</timezone>
		</contributor>
	</contributors>

	<dependencies>
		<!-- Maven core -->
		<dependency>
			<groupId>org.codehaus.plexus</groupId>
			<artifactId>plexus-utils</artifactId>
			<version>3.1.0</version>
		</dependency>
		<dependency>
			<groupId>org.apache.maven</groupId>
			<artifactId>maven-core</artifactId>
			<version>${mavenVersion}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.maven</groupId>
			<artifactId>maven-model</artifactId>
			<version>${mavenVersion}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.maven.reporting</groupId>
			<artifactId>maven-reporting-api</artifactId>
			<version>3.0</version>
		</dependency>
		<dependency>
			<groupId>org.apache.maven</groupId>
			<artifactId>maven-plugin-api</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.maven.plugin-tools</groupId>
			<artifactId>maven-plugin-annotations</artifactId>
			<scope>provided</scope><!-- annotations are needed only to build the plugin -->
		</dependency>
		<!-- Other -->
		<!-- see: https://cwiki.apache.org/confluence/display/MAVEN/Plugin+migration+to+Maven3+dependencies -->
		<dependency>
			<groupId>org.apache.maven</groupId>
			<artifactId>maven-compat</artifactId>
			<version>${mavenVersion}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.maven.doxia</groupId>
			<artifactId>doxia-sink-api</artifactId>
			<version>${doxiaVersion}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.maven.doxia</groupId>
			<artifactId>doxia-site-renderer</artifactId>
			<version>${doxiaVersion}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.maven.reporting</groupId>
			<artifactId>maven-reporting-impl</artifactId>
			<version>2.4</version>
		</dependency>
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjtools</artifactId>
			<version>${aspectjVersion}</version>
		</dependency>
		<!-- This is required to make the ajdoc tool work properly. When generating 
			the AspectJ site documentation, the following debug statement is emitted 
			onto the log: [DEBUG] Running : ajdoc -classpath [... a long classpath follows 
			...] ajdoc requires a JDK 1.4 or later tools jar - exiting -->
		<!-- Test -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.maven.plugin-testing</groupId>
			<artifactId>maven-plugin-testing-harness</artifactId>
			<version>2.1</version>
			<scope>test</scope>
		</dependency>

	</dependencies>

	<build>

		<plugins>
			<plugin>
				<groupId>se.jiderhamn</groupId>
				<artifactId>promote-maven-plugin</artifactId>
				<version>2.0.1</version>
				<!-- Automatically execute promote:make-promotable after each snapshot 
					build -->
				<executions>
					<execution>
						<goals>
							<goal>make-promotable</goal>
						</goals>
					</execution>
				</executions>
			</plugin>

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

			<plugin>
				<groupId>org.sonatype.plugins</groupId>
				<artifactId>nexus-staging-maven-plugin</artifactId>
				<version>1.6.7</version>
				<extensions>true</extensions>
				<configuration>
					<serverId>ossrh</serverId>
					<nexusUrl>https://oss.sonatype.org/</nexusUrl>
					<autoReleaseAfterClose>true</autoReleaseAfterClose>
				</configuration>
			</plugin>
			<plugin>
				<artifactId>maven-deploy-plugin</artifactId>
				<executions>
					<execution>
						<id>default-deploy</id>
						<phase>deploy</phase>
						<goals>
							<goal>deploy</goal>
						</goals>
					</execution>
				</executions>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-release-plugin</artifactId>
				<configuration>
					<localCheckout>true</localCheckout>
					<pushChanges>false</pushChanges>
					<mavenExecutorId>forked-path</mavenExecutorId>
					<arguments>-Dgpg.passphrase=${gpg.passphrase}</arguments>
				</configuration>
				<dependencies>
					<dependency>
						<groupId>org.apache.maven.scm</groupId>
						<artifactId>maven-scm-provider-gitexe</artifactId>
						<version>1.9.5</version>
					</dependency>
				</dependencies>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-plugin-plugin</artifactId>
				<configuration>
					<!-- see: https://github.com/apache/maven-plugin-tools/pull/11 -->
					<mojoDependencies>io.starter:aspectj-maven-plugin</mojoDependencies>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-enforcer-plugin</artifactId>
				<executions>
					<execution>
						<id>enforce-bytecode-version</id>
						<goals>
							<goal>enforce</goal>
						</goals>
						<configuration>
							<rules>
								<enforceBytecodeVersion>
									<maxJdkVersion>${mojo.java.target}</maxJdkVersion>
									<excludes>
										<exclude>com.sun:tools</exclude>
									</excludes>
								</enforceBytecodeVersion>
							</rules>
						</configuration>
					</execution>
				</executions>
				<dependencies>
					<dependency>
						<groupId>org.codehaus.mojo</groupId>
						<artifactId>extra-enforcer-rules</artifactId>
						<version>1.0-beta-7</version>
					</dependency>
				</dependencies>
			</plugin>
			<plugin>
				<artifactId>maven-surefire-plugin</artifactId>
				<configuration>
					<skip>false</skip>
					<excludes>
						<exclude>**/test-project/**/*.java</exclude>
						<exclude>**/parent-child-test-project/**/*.java</exclude>
						<exclude>**/AbstractAjcMojoTest.java</exclude>
					</excludes>
				</configuration>
			</plugin>

			<!-- Provides PlantUML integration into site deployments. -->
			<plugin>
				<groupId>com.github.jeluard</groupId>
				<artifactId>plantuml-maven-plugin</artifactId>
				<version>7954</version>
				<configuration>
					<sourceFiles>
						<directory>${basedir}</directory>
						<includes>
							<include>src/site/**/*.puml</include>
						</includes>
					</sourceFiles>
					<outputDirectory>${project.build.directory}/site/images/plantuml</outputDirectory>
				</configuration>
				<executions>
					<execution>
						<id>generate-plantuml-diagrams</id>
						<goals>
							<goal>generate</goal>
						</goals>
						<phase>pre-site</phase>
					</execution>
				</executions>
				<dependencies>
					<dependency>
						<groupId>net.sourceforge.plantuml</groupId>
						<artifactId>plantuml</artifactId>
						<version>7985</version>
					</dependency>
				</dependencies>
			</plugin>
		</plugins>
	</build>

	<reporting>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-plugin-plugin</artifactId>
				<version>3.5</version>
				<configuration>
					<!-- see: https://github.com/apache/maven-plugin-tools/pull/11 -->
					<mojoDependencies>io.starter:aspectj-maven-plugin</mojoDependencies>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>l10n-maven-plugin</artifactId>
				<version>1.0-alpha-2</version>
				<configuration>
					<locales>
						<locale>nl</locale>
						<locale>sv</locale>
					</locales>
				</configuration>
			</plugin>
		</plugins>
	</reporting>

	<profiles>


		<!-- AspectJ compilation requires that tools.jar (or its equivalent for 
			some JDKs) is found on the classpath. The profiles named [something]toolsJar-profile 
			define the systemPath for the tools.jar dependency by overriding the dummy 
			systemPath from the dependencyManagement section. CAVEAT: Setting the systemPath 
			it via a profile-dependent property like in earlier plugin versions does 
			*not* work when the compiled plugin is used from Eclipse because properties 
			are incorrectly merged by Eclipse, leading to problems ever since the 'java8' 
			profile was introduced here because it also defines a property. -->

		<profile>
			<id>tools-jar</id>
			<activation>
				<jdk>1.8</jdk> <!-- activate only on JDK8, as 8 is minimum version to run aspectj on -->
			</activation>
			<dependencies>
				<dependency>
					<groupId>com.sun</groupId>
					<artifactId>tools</artifactId>
					<version>1.8</version>
					<scope>system</scope>
					<systemPath>${java.home}/../lib/tools.jar</systemPath>
				</dependency>
			</dependencies>
		</profile>
		<profile>
			<id>java8</id>
			<activation>
				<jdk>[1.8,)</jdk>
			</activation>
			<properties>
				<!-- Because of this properties section the old way of setting the tools.jar 
					path via a property defined in another profile does not work anymore when 
					importing Maven projects into Eclipse. :-( -->
				<additionalparam>-Xdoclint:none</additionalparam>
			</properties>
		</profile>
		<profile>
			<id>maven-repo-local</id>
			<activation>
				<property>
					<name>maven.repo.local</name>
				</property>
			</activation>
			<build>
				<plugins>
					<plugin>
						<artifactId>maven-surefire-plugin</artifactId>
						<configuration>
							<systemProperties>
								<property>
									<!-- Pass this through to the tests (if set!) to have them pick 
										the right repository -->
									<name>maven.repo.local</name>
									<value>${maven.repo.local}</value>
								</property>
							</systemProperties>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>
		<profile>
			<id>integration-test</id>
			<activation>
				<activeByDefault>true</activeByDefault>
			</activation>
			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-invoker-plugin</artifactId>
						<executions>
							<execution>
								<id>integration-test</id>
								<phase>verify</phase>
								<goals>
									<goal>verify</goal>
									<goal>run</goal>
								</goals>
							</execution>
						</executions>
						<configuration>
							<projectsDirectory>src/it</projectsDirectory>
							<cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>
							<postBuildHookScript>verify</postBuildHookScript>
							<localRepositoryPath>${project.build.directory}/local-repo
							</localRepositoryPath>
							<goals>
								<goal>clean</goal>
								<goal>test</goal>
							</goals>
							<settingsFile>src/it/settings.xml</settingsFile>
							<debug>true</debug>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>

		<profile>
			<id>ossrh</id>
			<activation>
				<activeByDefault>true</activeByDefault>
			</activation>
			<properties>
				<gpg.passphrase>${gpg.passphrase}</gpg.passphrase>
			</properties>
		</profile>

		<!-- GPG Signature on release -->
		<profile>
			<id>release-sign-artifacts</id>
			<activation>
				<property>
					<name>performRelease</name>
					<value>true</value>
				</property>
			</activation>
			<build>
				<plugins>
					<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>
				</plugins>
			</build>
		</profile>
	</profiles>
</project>
