a9bd30b577
Bug which required disabling this bug pattern was fixed in 2.19.1 and
Error Prone dependency was updated to that version in commit
3c4b072100
384 lines
15 KiB
XML
384 lines
15 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!--
|
|
Copyright 2015 Google LLC
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
-->
|
|
<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/maven-v4_0_0.xsd"
|
|
child.project.url.inherit.append.path="false">
|
|
<modelVersion>4.0.0</modelVersion>
|
|
|
|
<groupId>com.google.code.gson</groupId>
|
|
<artifactId>gson-parent</artifactId>
|
|
<version>2.10.2-SNAPSHOT</version>
|
|
<packaging>pom</packaging>
|
|
|
|
<name>Gson Parent</name>
|
|
<description>Gson JSON library</description>
|
|
<url>https://github.com/google/gson</url>
|
|
|
|
<modules>
|
|
<module>gson</module>
|
|
<module>extras</module>
|
|
<module>metrics</module>
|
|
<module>proto</module>
|
|
</modules>
|
|
|
|
<properties>
|
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
|
<maven.compiler.release>7</maven.compiler.release>
|
|
<maven.compiler.testRelease>11</maven.compiler.testRelease>
|
|
</properties>
|
|
|
|
<!-- These attributes specify that the URLs should be inherited by the modules as is, to avoid constructing
|
|
invalid URLs, see also https://maven.apache.org/ref/3.9.1/maven-model-builder/index.html#inheritance-assembly -->
|
|
<scm child.scm.url.inherit.append.path="false" child.scm.connection.inherit.append.path="false" child.scm.developerConnection.inherit.append.path="false">
|
|
<url>https://github.com/google/gson/</url>
|
|
<connection>scm:git:https://github.com/google/gson.git</connection>
|
|
<developerConnection>scm:git:git@github.com:google/gson.git</developerConnection>
|
|
<tag>HEAD</tag>
|
|
</scm>
|
|
|
|
<developers>
|
|
<developer>
|
|
<id>google</id>
|
|
<organization>Google</organization>
|
|
<organizationUrl>https://www.google.com</organizationUrl>
|
|
</developer>
|
|
</developers>
|
|
|
|
<issueManagement>
|
|
<system>GitHub Issues</system>
|
|
<url>https://github.com/google/gson/issues</url>
|
|
</issueManagement>
|
|
|
|
<licenses>
|
|
<license>
|
|
<name>Apache-2.0</name>
|
|
<url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
|
|
</license>
|
|
</licenses>
|
|
|
|
<distributionManagement>
|
|
<repository>
|
|
<id>sonatype-nexus-staging</id>
|
|
<name>Nexus Release Repository</name>
|
|
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
|
|
</repository>
|
|
</distributionManagement>
|
|
|
|
<dependencyManagement>
|
|
<dependencies>
|
|
<dependency>
|
|
<groupId>junit</groupId>
|
|
<artifactId>junit</artifactId>
|
|
<version>4.13.2</version>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
</dependencies>
|
|
</dependencyManagement>
|
|
|
|
<build>
|
|
<plugins>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-enforcer-plugin</artifactId>
|
|
<version>3.3.0</version>
|
|
<executions>
|
|
<execution>
|
|
<id>enforce-versions</id>
|
|
<goals>
|
|
<goal>enforce</goal>
|
|
</goals>
|
|
<configuration>
|
|
<rules>
|
|
<requireMavenVersion>
|
|
<!-- Usage of `.mvn/jvm.config` for Error Prone requires at least Maven 3.3.1 -->
|
|
<version>[3.3.1,)</version>
|
|
</requireMavenVersion>
|
|
|
|
<!-- Enforce that correct JDK version is used to avoid cryptic build errors -->
|
|
<requireJavaVersion>
|
|
<!-- Other plugins of this build require at least JDK 11 -->
|
|
<version>[11,)</version>
|
|
</requireJavaVersion>
|
|
</rules>
|
|
</configuration>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
</plugins>
|
|
|
|
<pluginManagement>
|
|
<plugins>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-compiler-plugin</artifactId>
|
|
<version>3.11.0</version>
|
|
<configuration>
|
|
<showWarnings>true</showWarnings>
|
|
<showDeprecation>true</showDeprecation>
|
|
<failOnWarning>true</failOnWarning>
|
|
<compilerArgs>
|
|
<!-- Args related to Error Prone, see: https://errorprone.info/docs/installation#maven -->
|
|
<arg>-XDcompilePolicy=simple</arg>
|
|
<arg>-Xplugin:ErrorProne
|
|
-XepExcludedPaths:.*/generated-test-sources/protobuf/.*
|
|
-Xep:NotJavadoc:OFF <!-- Triggered by local class. -->
|
|
</arg>
|
|
<!-- Enable all warnings, except for ones which cause issues when building with newer JDKs, see also
|
|
https://docs.oracle.com/en/java/javase/11/tools/javac.html -->
|
|
<compilerArg>-Xlint:all,-options</compilerArg>
|
|
</compilerArgs>
|
|
<annotationProcessorPaths>
|
|
<path>
|
|
<groupId>com.google.errorprone</groupId>
|
|
<artifactId>error_prone_core</artifactId>
|
|
<version>2.19.1</version>
|
|
</path>
|
|
</annotationProcessorPaths>
|
|
</configuration>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-javadoc-plugin</artifactId>
|
|
<version>3.5.0</version>
|
|
<configuration>
|
|
<!-- Specify newer JDK as target to allow linking to newer Java API, and to generate
|
|
module overview in Javadoc for Gson's module descriptor -->
|
|
<release>11</release>
|
|
<!-- Exclude `missing` group because some tags have been omitted when they are redundant -->
|
|
<doclint>all,-missing</doclint>
|
|
<!-- Link against newer Java API Javadoc because most users likely
|
|
use a newer Java version than the one used for building this project -->
|
|
<detectJavaApiLink>false</detectJavaApiLink>
|
|
<links>
|
|
<link>https://docs.oracle.com/en/java/javase/11/docs/api/</link>
|
|
<link>https://errorprone.info/api/latest/</link>
|
|
</links>
|
|
<!-- Disable detection of offline links between Maven modules:
|
|
(1) Only `gson` module is published, so for other modules Javadoc links don't
|
|
matter much at the moment; (2) The derived URL for the modules is based on
|
|
the project URL (= Gson GitHub repo) which is incorrect because it is not
|
|
hosting the Javadoc (3) It might fail due to https://bugs.openjdk.java.net/browse/JDK-8212233 -->
|
|
<detectOfflineLinks>false</detectOfflineLinks>
|
|
<!-- Only show warnings and errors -->
|
|
<quiet>true</quiet>
|
|
<failOnWarnings>true</failOnWarnings>
|
|
</configuration>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-jar-plugin</artifactId>
|
|
<version>3.3.0</version>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-source-plugin</artifactId>
|
|
<version>3.2.1</version>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-gpg-plugin</artifactId>
|
|
<version>3.1.0</version>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-release-plugin</artifactId>
|
|
<version>3.0.0</version>
|
|
<configuration>
|
|
<autoVersionSubmodules>true</autoVersionSubmodules>
|
|
<!-- Disable Maven Super POM release profile and instead use own one -->
|
|
<useReleaseProfile>false</useReleaseProfile>
|
|
<releaseProfiles>release</releaseProfiles>
|
|
<!-- Run custom goals to replace version references, see plugin configuration below -->
|
|
<!-- Also run `verify` to make sure tests still pass with new version number;
|
|
also seems to be necessary because without `package`, goals fail for modules depending
|
|
on each other; possibly same issue as https://issues.apache.org/jira/browse/MRELEASE-271 -->
|
|
<preparationGoals>
|
|
clean verify
|
|
antrun:run@replace-version-placeholders
|
|
antrun:run@replace-old-version-references
|
|
antrun:run@git-add-changed
|
|
</preparationGoals>
|
|
</configuration>
|
|
</plugin>
|
|
<plugin>
|
|
<artifactId>maven-antrun-plugin</artifactId>
|
|
<version>3.1.0</version>
|
|
<executions>
|
|
<!-- Replaces version placeholders with the current version; this is mainly useful for
|
|
Javadoc where this allows writing `@since $next-version$` -->
|
|
<execution>
|
|
<id>replace-version-placeholders</id>
|
|
<goals>
|
|
<goal>run</goal>
|
|
</goals>
|
|
<configuration>
|
|
<target>
|
|
<replace token="$next-version$" value="${project.version}" encoding="${project.build.sourceEncoding}">
|
|
<!-- erroronmissingdir=false for gson-parent which does not have source directory -->
|
|
<fileset dir="${project.build.sourceDirectory}" includes="**" erroronmissingdir="false" />
|
|
</replace>
|
|
</target>
|
|
</configuration>
|
|
</execution>
|
|
<!-- Replaces references to the old version in the documentation -->
|
|
<execution>
|
|
<id>replace-old-version-references</id>
|
|
<goals>
|
|
<goal>run</goal>
|
|
</goals>
|
|
<configuration>
|
|
<target>
|
|
<!-- Replace Maven and Gradle version references; uses regex lookbehind and lookahead -->
|
|
<replaceregexp match="(?<=<version>).*(?=</version>)|(?<='com\.google\.code\.gson:gson:).*(?=')" flags="g" replace="${project.version}" encoding="${project.build.sourceEncoding}">
|
|
<fileset dir="${project.basedir}">
|
|
<include name="README.md" />
|
|
<include name="UserGuide.md" />
|
|
</fileset>
|
|
</replaceregexp>
|
|
</target>
|
|
</configuration>
|
|
<!-- Only has to be executed for parent project; don't inherit this to modules -->
|
|
<!-- This might be a bit hacky; execution with this ID seems to be missing for modules and Maven just executes default
|
|
configuration which does not have any targets configured. (not sure if this behavior is guaranteed) -->
|
|
<inherited>false</inherited>
|
|
</execution>
|
|
<!-- Adds changed files to the Git index; workaround because Maven Release Plugin does not support committing
|
|
additional files yet (https://issues.apache.org/jira/browse/MRELEASE-798), and for workarounds with
|
|
Maven SCM Plugin it is apparently necessary to know modified files in advance -->
|
|
<!-- Maven Release Plugin then just happens to include these changed files in its Git commit;
|
|
not sure if this behavior is guaranteed or if this relies on implementation details -->
|
|
<execution>
|
|
<id>git-add-changed</id>
|
|
<goals>
|
|
<goal>run</goal>
|
|
</goals>
|
|
<configuration>
|
|
<target>
|
|
<exec executable="git" dir="${project.basedir}" failonerror="true">
|
|
<arg value="add" />
|
|
<!-- Don't add (unrelated) not yet tracked files -->
|
|
<arg value="--update" />
|
|
<arg value="." />
|
|
</exec>
|
|
</target>
|
|
</configuration>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
<!-- Plugin for checking source and binary compatibility; used by GitHub workflow -->
|
|
<plugin>
|
|
<groupId>com.github.siom79.japicmp</groupId>
|
|
<artifactId>japicmp-maven-plugin</artifactId>
|
|
<version>0.17.2</version>
|
|
<configuration>
|
|
<oldVersion>
|
|
<dependency>
|
|
<groupId>${project.groupId}</groupId>
|
|
<artifactId>${project.artifactId}</artifactId>
|
|
<!-- This is set by the GitHub workflow -->
|
|
<version>JAPICMP-OLD</version>
|
|
</dependency>
|
|
</oldVersion>
|
|
<newVersion>
|
|
<file>
|
|
<path>${project.build.directory}/${project.build.finalName}.${project.packaging}</path>
|
|
</file>
|
|
</newVersion>
|
|
<parameter>
|
|
<breakBuildOnSourceIncompatibleModifications>true</breakBuildOnSourceIncompatibleModifications>
|
|
<breakBuildOnBinaryIncompatibleModifications>true</breakBuildOnBinaryIncompatibleModifications>
|
|
<excludes>
|
|
<exclude>com.google.gson.internal</exclude>
|
|
</excludes>
|
|
<onlyModified>true</onlyModified>
|
|
<skipXmlReport>true</skipXmlReport>
|
|
<reportOnlyFilename>true</reportOnlyFilename>
|
|
</parameter>
|
|
</configuration>
|
|
</plugin>
|
|
</plugins>
|
|
</pluginManagement>
|
|
</build>
|
|
|
|
<profiles>
|
|
<!-- Disable Error Prone in Java 15 -->
|
|
<profile>
|
|
<id>jdk15</id>
|
|
<activation>
|
|
<jdk>15</jdk>
|
|
</activation>
|
|
<build>
|
|
<plugins>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-compiler-plugin</artifactId>
|
|
<configuration>
|
|
<compilerArgs combine.self="override">
|
|
<compilerArg>-Xlint:all,-options</compilerArg>
|
|
</compilerArgs>
|
|
</configuration>
|
|
</plugin>
|
|
</plugins>
|
|
</build>
|
|
</profile>
|
|
<!-- Profile defining additional plugins to be executed for release -->
|
|
<profile>
|
|
<id>release</id>
|
|
<build>
|
|
<plugins>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-source-plugin</artifactId>
|
|
<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>
|
|
<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>
|
|
<executions>
|
|
<execution>
|
|
<id>sign-artifacts</id>
|
|
<phase>verify</phase>
|
|
<goals>
|
|
<goal>sign</goal>
|
|
</goals>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
</plugins>
|
|
</build>
|
|
</profile>
|
|
</profiles>
|
|
</project>
|