morphix-all
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency>
<groupId>io.github.raduking</groupId>
<artifactId>morphix-all</artifactId>
<version>1.0.29</version>
</dependency><?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>
<!--
This project only has test dependencies.
Using spring-boot-starter-parent to update dependencies easier and ensure that all dependencies work well together
this parent having most of the commonly used dependencies defined with tested versions across Java projects.
-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>4.0.5</version>
<relativePath />
</parent>
<groupId>io.github.raduking</groupId>
<artifactId>morphix-all</artifactId>
<version>1.0.29</version>
<packaging>jar</packaging>
<name>${project.groupId}:${project.artifactId}</name>
<description>A library that exposes generic Java utility methods and and a package for converting a source object to a destination object.</description>
<url>https://github.com/raduking/morphix</url>
<licenses>
<license>
<name>Apache License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
</license>
</licenses>
<developers>
<developer>
<id>raduking</id>
<name>Radu Sebastian LAZIN</name>
<email>raduking@gmail.com</email>
</developer>
</developers>
<scm>
<connection>scm:git:git://github.com/raduking/morphix.git</connection>
<developerConnection>scm:git:ssh://github.com:raduking/morphix.git</developerConnection>
<url>https://github.com/raduking/morphix/tree/master</url>
</scm>
<properties>
<java.version>21</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
<maven.compiler.release>${java.version}</maven.compiler.release>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- Publishing dependencies versions -->
<maven.gpg.plugin.version>3.2.8</maven.gpg.plugin.version>
<central.publishing.maven.plugin.version>0.10.0</central.publishing.maven.plugin.version>
<!-- Other plugin versions -->
<spotless.maven.plugin.version>3.3.0</spotless.maven.plugin.version>
<org.eclipse.jdt.core.version>3.44.0</org.eclipse.jdt.core.version>
<eclipse.formatter.version>4.38</eclipse.formatter.version>
<code.format.version>1.0.0</code.format.version>
<properties.maven.plugin.version>1.3.0</properties.maven.plugin.version>
<!-- Testing dependencies versions -->
<pitest.maven.plugin.version>1.23.0</pitest.maven.plugin.version>
<pitest.plugin.junit5.version>1.2.3</pitest.plugin.junit5.version>
<jacoco.maven.plugin.version>0.8.14</jacoco.maven.plugin.version>
<maven.project.info.reports.plugin.version>3.9.0</maven.project.info.reports.plugin.version>
<!-- Benchmarking -->
<jmh.version>1.37</jmh.version>
<!-- JVM arguments for Morphix tests and mutation testing -->
<morphixArgLine>
-XX:+EnableDynamicAgentLoading
-Xshare:off
--add-opens java.base/java.util=ALL-UNNAMED
--add-opens java.base/java.lang=ALL-UNNAMED
--add-opens java.base/java.lang.invoke=ALL-UNNAMED
--add-opens java.base/sun.reflect.annotation=ALL-UNNAMED
--add-exports java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED
</morphixArgLine>
</properties>
<dependencies>
<!-- Testing -->
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<scope>test</scope>
</dependency>
<!-- Benchmarking dependencies (scope=test so they don't affect the main build) -->
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-core</artifactId>
<version>${jmh.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-generator-annprocess</artifactId>
<version>${jmh.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
<release>${maven.compiler.release}</release>
<proc>none</proc>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<argLine>${jacocoArgLine} ${morphixArgLine}</argLine>
</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-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Writes all maven project properties to ${project.build.directory}/maven.properties -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>${properties.maven.plugin.version}</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>write-project-properties</goal>
</goals>
<configuration>
<outputFile>${project.build.directory}/maven.properties</outputFile>
</configuration>
</execution>
</executions>
</plugin>
<!-- Jacoco code coverage -->
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco.maven.plugin.version}</version>
<executions>
<execution>
<id>pre-unit-test</id>
<phase>test-compile</phase>
<goals>
<goal>prepare-agent</goal>
</goals>
<configuration>
<destFile>${project.reporting.outputDirectory}/jacoco.exec</destFile>
<propertyName>jacocoArgLine</propertyName>
</configuration>
</execution>
<execution>
<id>report</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
<configuration>
<dataFile>${project.reporting.outputDirectory}/jacoco.exec</dataFile>
<outputDirectory>${project.reporting.outputDirectory}</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<!-- Mutation testing -->
<!-- mvn org.jacoco:jacoco-maven-plugin:prepare-agent org.pitest:pitest-maven:mutationCoverage -->
<!-- mvn -DwithHistory org.jacoco:jacoco-maven-plugin:prepare-agent org.pitest:pitest-maven:mutationCoverage -->
<plugin>
<groupId>org.pitest</groupId>
<artifactId>pitest-maven</artifactId>
<version>${pitest.maven.plugin.version}</version>
<!-- Allows it to work with JUnit 5 -->
<dependencies>
<dependency>
<groupId>org.pitest</groupId>
<artifactId>pitest-junit5-plugin</artifactId>
<version>${pitest.plugin.junit5.version}</version>
</dependency>
</dependencies>
<configuration>
<targetClasses>
<param>org.morphix.*</param>
</targetClasses>
<targetTests>
<param>org.morphix.*</param>
</targetTests>
<excludedClasses>
org.morphix.reflection.jvm.*
</excludedClasses>
<verbose>false</verbose>
<parseSurefireArgLine>false</parseSurefireArgLine>
<argLine>${morphixArgLine}</argLine>
</configuration>
</plugin>
<plugin>
<groupId>com.diffplug.spotless</groupId>
<artifactId>spotless-maven-plugin</artifactId>
<version>${spotless.maven.plugin.version}</version>
<dependencies>
<dependency>
<groupId>org.eclipse.jdt</groupId>
<artifactId>org.eclipse.jdt.core</artifactId>
<version>${org.eclipse.jdt.core.version}</version>
</dependency>
<dependency>
<groupId>io.github.raduking</groupId>
<artifactId>code-format</artifactId>
<version>${code.format.version}</version>
</dependency>
</dependencies>
<configuration>
<java>
<eclipse>
<file>java-code-style.xml</file>
<version>${eclipse.formatter.version}</version>
</eclipse>
<removeUnusedImports />
<forbidWildcardImports />
<trimTrailingWhitespace />
<endWithNewline />
</java>
</configuration>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>apply</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>active-on-property-environment</id>
<activation>
<property>
<name>release</name>
<value>true</value>
</property>
</activation>
<build>
<plugins>
<!--
Activate it with: -Drelease=true
-->
<!-- Artifact signing for publishing -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>${maven.gpg.plugin.version}</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
<configuration>
<keyname>${env.MAVEN_GPG_PLUGIN_KEY}</keyname>
<gpgArguments>
<argument>--pinentry-mode</argument>
<argument>loopback</argument>
</gpgArguments>
</configuration>
</plugin>
<!-- Publish to Maven Central -->
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<version>${central.publishing.maven.plugin.version}</version>
<extensions>true</extensions>
<configuration>
<autoPublish>true</autoPublish>
<deploymentName>release-${project.artifactId}-${project.version}</deploymentName>
<publishingServerId>central</publishingServerId>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>benchmark</id>
<properties>
<annotation.processing>full</annotation.processing>
<jmh.fork>1</jmh.fork>
<maven.build.timestamp.format>yyyyMMdd-HHmmss</maven.build.timestamp.format>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
<annotationProcessorPaths>
<path>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-generator-annprocess</artifactId>
<version>${jmh.version}</version>
</path>
</annotationProcessorPaths>
<proc>${annotation.processing}</proc>
</configuration>
</plugin>
<!--
run benchmarks conditionally with 1 warmup forks and 2 run forks:
mvn jmh:benchmark -Pbenchmark -Djmh.wf=1 -Djmh.fork=2
-->
<plugin>
<groupId>pw.krejci</groupId>
<artifactId>jmh-maven-plugin</artifactId>
<version>0.2.2</version>
<configuration>
<fork>${jmh.fork}</fork>
<resultFormat>JSON</resultFormat>
<resultsFile>target/jmh-result-${maven.build.timestamp}.json</resultsFile>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
<reporting>
<!-- mvn clean install org.pitest:pitest-maven:mutationCoverage site -->
<plugins>
<!-- Reports -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>${maven.project.info.reports.plugin.version}</version>
</plugin>
<!--Jacoco code coverage -->
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco.maven.plugin.version}</version>
<reportSets>
<reportSet>
<reports>
<!-- select non-aggregate reports -->
<report>report</report>
</reports>
</reportSet>
</reportSets>
</plugin>
<!-- Mutation testing -->
<!-- mvn clean org.pitest:pitest-maven:mutationCoverage site -->
<plugin>
<groupId>org.pitest</groupId>
<artifactId>pitest-maven</artifactId>
<version>${pitest.maven.plugin.version}</version>
<reportSets>
<reportSet>
<reports>
<report>report</report>
</reports>
</reportSet>
</reportSets>
</plugin>
</plugins>
</reporting>
<distributionManagement>
<snapshotRepository>
<id>central</id>
<name>Central Repository Snapshots</name>
<url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>central</id>
<name>Central Repository</name>
<url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>
<repositories>
</repositories>
</project>