mirror of
https://github.com/mapstruct/mapstruct.git
synced 2025-07-12 00:00:08 +08:00
With JUnit Jupiter it is still not possible to set the ClassLoader for loading the test class. However, since 5.8 M1 there is a way to hook into the launcher discovery process and change the Current Thread ContextClassLoader which would load the classes with our customer ClassLoader. Once JUnit Jupiter 201 is resolved we can simplify this. The CompilationCache is stored in the GlobalCache with the CompilationRequest as key. This means that even when methods are not executed in some particular order if they have same WithClasses then they would reuse the cache.
370 lines
15 KiB
XML
370 lines
15 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!--
|
|
|
|
Copyright MapStruct Authors.
|
|
|
|
Licensed under the Apache License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
-->
|
|
<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.mapstruct</groupId>
|
|
<artifactId>mapstruct-parent</artifactId>
|
|
<version>1.5.0-SNAPSHOT</version>
|
|
<relativePath>../parent/pom.xml</relativePath>
|
|
</parent>
|
|
|
|
<artifactId>mapstruct-processor</artifactId>
|
|
<packaging>jar</packaging>
|
|
<name>MapStruct Processor</name>
|
|
|
|
<properties>
|
|
<!-- Netbeans has a problem when we use late binding with @ in the surefire arg line.
|
|
Therefore we set this empty property here-->
|
|
<jacocoArgLine />
|
|
</properties>
|
|
|
|
<dependencies>
|
|
<!-- Compile -->
|
|
<dependency>
|
|
<groupId>org.freemarker</groupId>
|
|
<artifactId>freemarker</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.mapstruct.tools.gem</groupId>
|
|
<artifactId>gem-api</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>${project.groupId}</groupId>
|
|
<artifactId>mapstruct</artifactId>
|
|
<scope>provided</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.eclipse.tycho</groupId>
|
|
<artifactId>tycho-compiler-jdt</artifactId>
|
|
<scope>provided</scope>
|
|
<optional>true</optional>
|
|
</dependency>
|
|
<!-- Test -->
|
|
<dependency>
|
|
<groupId>org.junit.jupiter</groupId>
|
|
<artifactId>junit-jupiter-api</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.junit.jupiter</groupId>
|
|
<artifactId>junit-jupiter-engine</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.assertj</groupId>
|
|
<artifactId>assertj-core</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>com.google.guava</groupId>
|
|
<artifactId>guava</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>com.puppycrawl.tools</groupId>
|
|
<artifactId>checkstyle</artifactId>
|
|
<scope>test</scope>
|
|
<exclusions>
|
|
<exclusion>
|
|
<groupId>com.sun</groupId>
|
|
<artifactId>tools</artifactId>
|
|
</exclusion>
|
|
</exclusions>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>javax.inject</groupId>
|
|
<artifactId>javax.inject</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
|
|
<!-- plexus-container-default is a runtime-dependency of the tycho-compiler -->
|
|
<dependency>
|
|
<groupId>org.codehaus.plexus</groupId>
|
|
<artifactId>plexus-container-default</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
|
|
<!-- Spring -->
|
|
<dependency>
|
|
<groupId>org.springframework</groupId>
|
|
<artifactId>spring-test</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.springframework</groupId>
|
|
<artifactId>spring-beans</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.springframework</groupId>
|
|
<artifactId>spring-context</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
|
|
<dependency>
|
|
<groupId>org.junit.platform</groupId>
|
|
<artifactId>junit-platform-launcher</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
|
|
<!-- There is no compile dependency to Joda-Time; It's only required for testing the Joda conversions -->
|
|
<dependency>
|
|
<groupId>joda-time</groupId>
|
|
<artifactId>joda-time</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
</dependencies>
|
|
<build>
|
|
<plugins>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-jar-plugin</artifactId>
|
|
<configuration>
|
|
<archive>
|
|
<manifest>
|
|
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
|
|
</manifest>
|
|
<manifestEntries>
|
|
<Automatic-Module-Name>org.mapstruct.processor</Automatic-Module-Name>
|
|
<Spring-Boot-Jar-Type>annotation-processor</Spring-Boot-Jar-Type>
|
|
</manifestEntries>
|
|
</archive>
|
|
</configuration>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-surefire-plugin</artifactId>
|
|
<configuration>
|
|
<!-- to get jacoco report we need to set argLine in surefire,
|
|
without this snippet the jacoco argLine is lost -->
|
|
<!-- The property must be prefixed with @ and not $. The reason for this is the usage of late
|
|
binding of variables by other plugins (jacoco in this case)-->
|
|
<argLine>@{jacocoArgLine} -Xms1024m -Xmx3072m</argLine>
|
|
</configuration>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-resources-plugin</artifactId>
|
|
<executions>
|
|
<execution>
|
|
<id>copy-mapstruct-license</id>
|
|
<phase>prepare-package</phase>
|
|
<goals>
|
|
<goal>copy-resources</goal>
|
|
</goals>
|
|
<configuration>
|
|
<outputDirectory>${project.build.directory}/classes/META-INF</outputDirectory>
|
|
<resources>
|
|
<resource>
|
|
<directory>${basedir}/..</directory>
|
|
<filtering>false</filtering>
|
|
<include>LICENSE.txt</include>
|
|
</resource>
|
|
</resources>
|
|
</configuration>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-shade-plugin</artifactId>
|
|
<executions>
|
|
<execution>
|
|
<id>processor-deps-shading</id>
|
|
<phase>package</phase>
|
|
<goals>
|
|
<goal>shade</goal>
|
|
</goals>
|
|
<configuration>
|
|
<minimizeJar>true</minimizeJar>
|
|
<artifactSet>
|
|
<includes>
|
|
<include>org.freemarker:*</include>
|
|
<include>org.mapstruct.tools.gem:gem-api</include>
|
|
</includes>
|
|
</artifactSet>
|
|
<filters>
|
|
<filter>
|
|
<artifact>org.freemarker:freemarker</artifact>
|
|
<excludes>
|
|
<exclude>META-INF/*.*</exclude>
|
|
</excludes>
|
|
</filter>
|
|
<filter>
|
|
<artifact>org.mapstruct.tools.gem:gem-api</artifact>
|
|
<excludes>
|
|
<exclude>META-INF/*.*</exclude>
|
|
<exclude>**/GemDefinition.class</exclude>
|
|
<exclude>**/GemDefinitions.class</exclude>
|
|
</excludes>
|
|
</filter>
|
|
</filters>
|
|
<relocations>
|
|
<relocation>
|
|
<pattern>freemarker</pattern>
|
|
<shadedPattern>org.mapstruct.ap.shaded.freemarker</shadedPattern>
|
|
</relocation>
|
|
<relocation>
|
|
<pattern>org.mapstruct.tools.gem</pattern>
|
|
<shadedPattern>org.mapstruct.ap.shaded.org.mapstruct.tools.gem</shadedPattern>
|
|
</relocation>
|
|
</relocations>
|
|
</configuration>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
<!-- The flatten plugin should run after the shading is done -->
|
|
<plugin>
|
|
<groupId>org.codehaus.mojo</groupId>
|
|
<artifactId>flatten-maven-plugin</artifactId>
|
|
<executions>
|
|
<execution>
|
|
<!-- Tidy up all POMs before they are published -->
|
|
<id>flatten</id>
|
|
<phase>package</phase>
|
|
<goals>
|
|
<goal>flatten</goal>
|
|
</goals>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-dependency-plugin</artifactId>
|
|
<executions>
|
|
<execution>
|
|
<id>unpack-freemarker-license</id>
|
|
<phase>prepare-package</phase>
|
|
<goals>
|
|
<goal>unpack</goal>
|
|
</goals>
|
|
<configuration>
|
|
<artifactItems>
|
|
<artifactItem>
|
|
<groupId>org.freemarker</groupId>
|
|
<artifactId>freemarker</artifactId>
|
|
<outputDirectory>${project.build.directory}/classes/META-INF/freemarker</outputDirectory>
|
|
<includes>META-INF/LICENSE.txt,META-INF/NOTICE.txt</includes>
|
|
</artifactItem>
|
|
</artifactItems>
|
|
</configuration>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-compiler-plugin</artifactId>
|
|
<configuration>
|
|
<annotationProcessorPaths>
|
|
<path>
|
|
<groupId>org.mapstruct.tools.gem</groupId>
|
|
<artifactId>gem-processor</artifactId>
|
|
<version>${org.mapstruct.gem.version}</version>
|
|
</path>
|
|
<!-- other annotation processors -->
|
|
</annotationProcessorPaths>
|
|
</configuration>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-checkstyle-plugin</artifactId>
|
|
<executions>
|
|
<execution>
|
|
<id>check-style</id>
|
|
<phase>verify</phase>
|
|
<goals>
|
|
<goal>checkstyle</goal>
|
|
</goals>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.jacoco</groupId>
|
|
<artifactId>jacoco-maven-plugin</artifactId>
|
|
<executions>
|
|
<execution>
|
|
<goals>
|
|
<goal>prepare-agent</goal>
|
|
</goals>
|
|
</execution>
|
|
<execution>
|
|
<id>report</id>
|
|
<phase>prepare-package</phase>
|
|
<goals>
|
|
<goal>report</goal>
|
|
</goals>
|
|
</execution>
|
|
</executions>
|
|
<configuration>
|
|
<propertyName>jacocoArgLine</propertyName>
|
|
</configuration>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-source-plugin</artifactId>
|
|
<executions>
|
|
<execution>
|
|
<id>attach-sources</id>
|
|
<phase>verify</phase>
|
|
<goals>
|
|
<goal>jar</goal>
|
|
</goals>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>de.thetaphi</groupId>
|
|
<artifactId>forbiddenapis</artifactId>
|
|
<executions>
|
|
<execution>
|
|
<goals>
|
|
<goal>check</goal>
|
|
</goals>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>com.github.siom79.japicmp</groupId>
|
|
<artifactId>japicmp-maven-plugin</artifactId>
|
|
<configuration>
|
|
<parameter>
|
|
<includes>
|
|
<include>org.mapstruct.ap</include>
|
|
</includes>
|
|
<excludes>
|
|
<exclude>org.mapstruct.ap.internal</exclude>
|
|
<exclude>org.mapstruct.ap.shaded</exclude>
|
|
</excludes>
|
|
</parameter>
|
|
</configuration>
|
|
</plugin>
|
|
</plugins>
|
|
</build>
|
|
|
|
<profiles>
|
|
<profile>
|
|
<id>jdk-11-or-newer</id>
|
|
<activation>
|
|
<jdk>[11</jdk>
|
|
</activation>
|
|
<dependencies>
|
|
<dependency>
|
|
<groupId>javax.xml.bind</groupId>
|
|
<artifactId>jaxb-api</artifactId>
|
|
<version>2.3.1</version>
|
|
<scope>provided</scope>
|
|
<optional>true</optional>
|
|
</dependency>
|
|
</dependencies>
|
|
</profile>
|
|
</profiles>
|
|
</project>
|