blob: d1df7b397e6bdccd7dc6f40c90b67be1f9ab5a1f [file] [log] [blame]
<?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>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy-parent</artifactId>
<version>1.7.9</version>
<packaging>pom</packaging>
<inceptionYear>2014</inceptionYear>
<name>Byte Buddy (parent)</name>
<description>
Byte Buddy is a Java library for creating Java classes at run time.
The parent artifact contains configuration information that concern all modules.
</description>
<url>http://bytebuddy.net</url>
<!--
There are several build profiles available:
- extras: Creates additional artifacts containing source files and javadoc. (activated on release)
- gpg: Sign all artifacts using gpg. (activated on release)
- checks: Applies style checks to the source files. (activated by default, activated on release)
- integration: Runs additional unit tests and executes static code analysis (activated on Travis CI)
- android: Builds an Android test application. An Android SDK is required for doing so. (excluded from release)
It is also possible to build Byte Buddy against a specific byte code level. By default, Byte Buddy is Java 6 compatible:
- java7: Sets the target level to Java 7.
- java8: Sets the target level to Java 8.
Additionally, the following reports are available via Maven:
- jacoco:prepare-agent verify jacoco:report - Computes coverage for test suite (all modules)
- org.pitest:pitest-maven:mutationCoverage - Runs mutation tests (all modules)
- findbugs:findbugs findbugs:gui - Runs findbugs and shows a report in a graphical interface (module specific)
- com.github.ferstl:jitwatch-jarscan-maven-plugin:scan - Finds all methods above HotSpot's inlining threshold
- clirr:check - Checks for binary changes in the API
-->
<modules>
<module>byte-buddy</module>
<module>byte-buddy-dep</module>
<module>byte-buddy-benchmark</module>
<module>byte-buddy-agent</module>
<module>byte-buddy-android</module>
<module>byte-buddy-maven-plugin</module>
<module>byte-buddy-gradle-plugin</module>
</modules>
<properties>
<bytebuddy.extras>false</bytebuddy.extras>
<bytebuddy.integration>false</bytebuddy.integration>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<code.level>1.6</code.level>
<pitest.target>net.bytebuddy</pitest.target>
<asm.javadoc>http://asm.ow2.org/asm50/javadoc/user/</asm.javadoc>
<version.asm>6.0</version.asm>
<version.junit>4.12</version.junit>
<version.mockito>2.7.22</version.mockito>
<version.plugin.clean>3.0.0</version.plugin.clean>
<version.plugin.bundle>3.3.0</version.plugin.bundle>
<version.plugin.compiler>3.6.1</version.plugin.compiler>
<version.plugin.install>2.5.2</version.plugin.install>
<version.plugin.deploy>2.8.2</version.plugin.deploy>
<version.plugin.javadoc>2.10.4</version.plugin.javadoc>
<version.plugin.source>3.0.1</version.plugin.source>
<version.plugin.shade>3.1.0</version.plugin.shade>
<version.plugin.gpg>1.6</version.plugin.gpg>
<version.plugin.jxr>2.5</version.plugin.jxr>
<version.plugin.jar>3.0.2</version.plugin.jar>
<version.plugin.plugin>3.5</version.plugin.plugin>
<version.plugin.release>2.5.3</version.plugin.release>
<version.plugin.resources>3.0.2</version.plugin.resources>
<version.plugin.surefire>2.20</version.plugin.surefire>
<version.plugin.pitest>1.2.0</version.plugin.pitest>
<version.plugin.animal-sniffer>1.16</version.plugin.animal-sniffer>
<version.plugin.enforcer>1.4.1</version.plugin.enforcer>
<version.plugin.jacoco>0.7.9</version.plugin.jacoco>
<version.plugin.coveralls>4.1.0</version.plugin.coveralls>
<version.plugin.checkstyle>2.17</version.plugin.checkstyle>
<version.plugin.findbugs>3.0.5</version.plugin.findbugs>
<version.annotations.findbugs>3.0.1u2</version.annotations.findbugs>
<version.plugin.jitwatch>1.0.1</version.plugin.jitwatch>
<version.plugin.clirr>2.8</version.plugin.clirr>
<version.android.sdk>4.1.1.4</version.android.sdk>
<version.lombok>1.16.18</version.lombok>
</properties>
<licenses>
<license>
<name>The Apache Software License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution>
<comments>A business-friendly OSS license</comments>
</license>
</licenses>
<developers>
<developer>
<id>raphw</id>
<name>Rafael Winterhalter</name>
<email>rafael.wth@gmail.com</email>
<url>http://rafael.codes</url>
<roles>
<role>developer</role>
</roles>
<timezone>+1</timezone>
</developer>
</developers>
<issueManagement>
<system>github.com</system>
<url>https://github.com/raphw/byte-buddy/issues</url>
</issueManagement>
<scm>
<connection>scm:git:git@github.com:raphw/byte-buddy.git</connection>
<developerConnection>scm:git:git@github.com:raphw/byte-buddy.git</developerConnection>
<url>git@github.com:raphw/byte-buddy.git</url>
<tag>byte-buddy-1.7.9</tag>
</scm>
<dependencies>
<!-- Allows the suppression of find bugs false-positives by annotations without adding an actual dependency. -->
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>annotations</artifactId>
<version>${version.annotations.findbugs}</version>
<scope>provided</scope>
</dependency>
<!-- Allow usage of Lombok annotations. -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${version.lombok}</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<!-- Define release properties. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>${version.plugin.release}</version>
<configuration>
<useReleaseProfile>false</useReleaseProfile>
<releaseProfiles>extras,gpg</releaseProfiles>
<autoVersionSubmodules>true</autoVersionSubmodules>
<tagNameFormat>byte-buddy-@{project.version}</tagNameFormat>
</configuration>
</plugin>
<!-- Enable mutation testing. -->
<plugin>
<groupId>org.pitest</groupId>
<artifactId>pitest-maven</artifactId>
<version>${version.plugin.pitest}</version>
<configuration>
<targetClasses>
<param>${pitest.target}.*</param>
</targetClasses>
<targetTests>
<param>${pitest.target}.*</param>
</targetTests>
</configuration>
</plugin>
<!-- Configure Jacoco support for evaluating test case coverage. -->
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${version.plugin.jacoco}</version>
<configuration>
<includes>
<include>net/bytebuddy/**</include>
</includes>
<excludes>
<exclude>net/bytebuddy/benchmark/generated/*</exclude>
<!-- Avoid adding synthetic members to test classes as test assert class members. -->
<exclude>*Test*</exclude>
<exclude>*test*</exclude>
</excludes>
</configuration>
</plugin>
<!-- Generate coveralls reports from Travis. -->
<plugin>
<groupId>org.eluder.coveralls</groupId>
<artifactId>coveralls-maven-plugin</artifactId>
<version>${version.plugin.coveralls}</version>
</plugin>
<!-- Also allow for manual findbugs execution. Note that the generated warnings do not always apply for Byte Buddy's use case. -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>${version.plugin.findbugs}</version>
<configuration>
<effort>Max</effort>
<threshold>Low</threshold>
<xmlOutput>true</xmlOutput>
<failOnError>false</failOnError>
<findbugsXmlOutputDirectory>${project.build.directory}/findbugs</findbugsXmlOutputDirectory>
</configuration>
</plugin>
<!-- Enable scanning for methods above the inlining threshold (JDK 7+) -->
<plugin>
<groupId>com.github.ferstl</groupId>
<artifactId>jitwatch-jarscan-maven-plugin</artifactId>
<version>${version.plugin.jitwatch}</version>
</plugin>
<!-- Enable scanning for binar changes between releases -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>clirr-maven-plugin</artifactId>
<version>${version.plugin.clirr}</version>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>${version.plugin.clean}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>${version.plugin.jar}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>${version.plugin.resources}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>${version.plugin.install}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${version.plugin.surefire}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>${version.plugin.deploy}</version>
<configuration>
<updateReleaseInfo>true</updateReleaseInfo>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${version.plugin.compiler}</version>
<inherited>true</inherited>
<configuration>
<source>${code.level}</source>
<target>${code.level}</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId>
<version>${version.plugin.plugin}</version>
</plugin>
</plugins>
</pluginManagement>
</build>
<!-- Define explicit version to overcome problem with generated reports. -->
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jxr-plugin</artifactId>
<version>${version.plugin.jxr}</version>
</plugin>
</plugins>
</reporting>
<distributionManagement>
<repository>
<id>bintray</id>
<url>https://api.bintray.com/maven/raphw/maven/ByteBuddy</url>
</repository>
</distributionManagement>
<profiles>
<!-- Fallback for Java 6 build to use older, compatible versions of plugins. -->
<profile>
<id>java6</id>
<activation>
<activeByDefault>false</activeByDefault>
<jdk>1.6</jdk>
</activation>
<properties>
<version.plugin.findbugs>2.5.5</version.plugin.findbugs>
<version.annotations.findbugs>2.0.3</version.annotations.findbugs>
<version.plugin.checkstyle>2.15</version.plugin.checkstyle>
</properties>
</profile>
<!-- Runs the build with a target version for Java 7 -->
<profile>
<id>java7</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<code.level>1.7</code.level>
</properties>
</profile>
<!-- Runs the build with a target version for Java 8 -->
<profile>
<id>java8</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<code.level>1.8</code.level>
</properties>
</profile>
<!-- Runs the build with a target version for Java 9 -->
<profile>
<id>java9</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<code.level>9</code.level>
</properties>
</profile>
<!-- Creates additional artifacts that are required for deployment. -->
<profile>
<id>extras</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<bytebuddy.extras>true</bytebuddy.extras>
</properties>
<build>
<plugins>
<!-- Create source code artifact. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>${version.plugin.source}</version>
<executions>
<execution>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Create javadoc artifact. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>${version.plugin.javadoc}</version>
<executions>
<execution>
<id>attach-javadoc</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
<!-- Additionally to the regular jar file specified above, create an aggregated jar. -->
<execution>
<id>aggregate-javadoc</id>
<goals>
<goal>aggregate</goal>
</goals>
<phase>package</phase>
<configuration>
<doctitle>Byte Buddy (full API), version ${project.version}</doctitle>
<!-- Fails due to repacking of ASM by the Shade plugin. -->
<failOnError>false</failOnError>
</configuration>
</execution>
</executions>
<configuration>
<detectJavaApiLink>true</detectJavaApiLink>
<links>
<link>${asm.javadoc}</link>
</links>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<!-- Sign any created artifact. (Requires configuration of gpg on the executing machine.) -->
<profile>
<id>gpg</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<plugins>
<!-- Sign artifacts. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>${version.plugin.gpg}</version>
<executions>
<execution>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- Basic checks that are not requiring too much runtime. -->
<profile>
<id>checks</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<!-- Check style on build. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>${version.plugin.checkstyle}</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>check</goal>
</goals>
<configuration>
<configLocation>checkstyle.xml</configLocation>
<consoleOutput>true</consoleOutput>
<failsOnError>true</failsOnError>
<excludes>**/generated/**/*</excludes>
</configuration>
</execution>
</executions>
</plugin>
<!-- Check API compatibility. -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>animal-sniffer-maven-plugin</artifactId>
<version>${version.plugin.animal-sniffer}</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>check</goal>
</goals>
<configuration>
<signature>
<groupId>org.codehaus.mojo.signature</groupId>
<artifactId>java16</artifactId>
<version>1.1</version>
</signature>
</configuration>
</execution>
</executions>
</plugin>
<!-- Make sure that Byte Buddy does never depend on ASM's tree API. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>${version.plugin.enforcer}</version>
<executions>
<execution>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<fail>true</fail>
<rules>
<bannedDependencies>
<includes>
<include>org.ow2.asm:asm-tree</include>
</includes>
</bannedDependencies>
</rules>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- Integration profile that executes long-running tasks and additional static code analysis. -->
<profile>
<id>integration</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<bytebuddy.integration>true</bytebuddy.integration>
</properties>
<build>
<plugins>
<!-- Enable non-fast-running unit tests by setting the integration profile. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<systemPropertyVariables>
<net.bytebuddy.test.integration>true</net.bytebuddy.test.integration>
</systemPropertyVariables>
</configuration>
</plugin>
<!-- Run findbugs if not specified differently in a module.-->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>${version.plugin.findbugs}</version>
<executions>
<execution>
<phase>verify</phase>
<goals>
<goal>check</goal>
</goals>
<configuration>
<effort>Max</effort>
<threshold>Low</threshold>
<xmlOutput>true</xmlOutput>
<failOnError>true</failOnError>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- Only build the Android test application on demand as it requires Android SDK installation. -->
<profile>
<id>android</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<modules>
<module>byte-buddy</module>
<module>byte-buddy-dep</module>
<module>byte-buddy-benchmark</module>
<module>byte-buddy-agent</module>
<module>byte-buddy-android</module>
<module>byte-buddy-android-test</module>
</modules>
</profile>
</profiles>
</project>