All Downloads are FREE. Search and download functionalities are using the official Maven repository.

META-INF.maven.com.google.code.gson.gson.pom.xml Maven / Gradle / Ivy

The newest version!
<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright 2008 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">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson-parent</artifactId>
    <version>2.11.0</version>
  </parent>

  <artifactId>gson</artifactId>
  <name>Gson</name>

  <licenses>
    <license>
      <name>Apache-2.0</name>
      <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
    </license>
  </licenses>

  <properties>
    <!-- Make the build reproducible, see root `pom.xml` -->
    <!-- This is duplicated here because that is recommended by `artifact:check-buildplan` -->
    <project.build.outputTimestamp>2024-05-19T18:53:38Z</project.build.outputTimestamp>

    <excludeTestCompilation>**/Java17*</excludeTestCompilation>
  </properties>

  <dependencies>
    <!-- This dependency can be considered optional; omitting it during runtime will most likely
      not cause any issues. However, it is not declared with `<optional>true</optional>` because
      that can lead to cryptic compiler warnings for consumers, and to be on the safe side in case
      there are actually issues which could occur when the dependency is missing at runtime.
      See also discussion at https://github.com/google/gson/pull/2320#issuecomment-1455233938 -->
    <dependency>
      <groupId>com.google.errorprone</groupId>
      <artifactId>error_prone_annotations</artifactId>
      <version>2.27.0</version>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.google.truth</groupId>
      <artifactId>truth</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava-testlib</artifactId>
      <version>33.1.0-jre</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <!--
        Plugins for source generation and compilation
      -->
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>templating-maven-plugin</artifactId>
        <version>3.0.0</version>
        <executions>
          <execution>
            <id>filtering-java-templates</id>
            <goals>
              <goal>filter-sources</goal>
            </goals>
            <configuration>
              <sourceDirectory>${project.basedir}/src/main/java-templates</sourceDirectory>
              <outputDirectory>${project.build.directory}/generated-sources/java-templates</outputDirectory>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <executions>
          <!-- Adjust standard `default-compile` execution -->
          <execution>
            <id>default-compile</id>
            <configuration>
              <excludes>
                <!-- module-info.java is compiled using ModiTect -->
                <exclude>module-info.java</exclude>
              </excludes>
            </configuration>
          </execution>
          <!-- Adjust standard `default-testCompile` execution -->
          <execution>
            <id>default-testCompile</id>
            <phase>test-compile</phase>
            <goals>
              <goal>testCompile</goal>
            </goals>
            <configuration>
              <testExcludes>
                <exclude>${excludeTestCompilation}</exclude>
              </testExcludes>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>biz.aQute.bnd</groupId>
        <artifactId>bnd-maven-plugin</artifactId>
        <version>6.4.0</version>
        <executions>
          <execution>
            <goals>
              <goal>bnd-process</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <!--
        Plugins for test execution
      -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <!-- Deny illegal access, this is required for ReflectionAccessTest -->
          <!-- Requires Java >= 9; Important: In case future Java versions
            don't support this flag anymore, don't remove it unless CI also runs with
            that Java version. Ideally would use toolchain to specify that this should
            run with e.g. Java 11, but Maven toolchain requirements (unlike Gradle ones)
            don't seem to be portable (every developer would have to set up toolchain
            configuration locally). -->
          <argLine>--illegal-access=deny</argLine>
        </configuration>
      </plugin>
      <plugin>
        <groupId>com.coderplus.maven.plugins</groupId>
        <artifactId>copy-rename-maven-plugin</artifactId>
        <version>1.0.1</version>
        <executions>
          <execution>
            <id>pre-obfuscate-class</id>
            <phase>process-test-classes</phase>
            <goals>
              <goal>rename</goal>
            </goals>
            <configuration>
              <fileSets>
                <fileSet>
                  <sourceFile>${project.build.directory}/test-classes/com/google/gson/functional/EnumWithObfuscatedTest.class</sourceFile>
                  <destinationFile>${project.build.directory}/test-classes-obfuscated-injar/com/google/gson/functional/EnumWithObfuscatedTest.class</destinationFile>
                </fileSet>
                <fileSet>
                  <sourceFile>${project.build.directory}/test-classes/com/google/gson/functional/EnumWithObfuscatedTest$Gender.class</sourceFile>
                  <destinationFile>${project.build.directory}/test-classes-obfuscated-injar/com/google/gson/functional/EnumWithObfuscatedTest$Gender.class</destinationFile>
                </fileSet>
              </fileSets>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>com.github.wvengen</groupId>
        <artifactId>proguard-maven-plugin</artifactId>
        <version>2.6.1</version>
        <executions>
          <execution>
            <id>obfuscate-test-class</id>
            <phase>process-test-classes</phase>
            <goals>
              <goal>proguard</goal>
            </goals>
          </execution>
        </executions>
        <!-- Upgrades ProGuard to version newer than the one included by plugin by default -->
        <dependencies>
          <dependency>
            <groupId>com.guardsquare</groupId>
            <artifactId>proguard-base</artifactId>
            <version>7.4.2</version>
          </dependency>
          <dependency>
            <groupId>com.guardsquare</groupId>
            <artifactId>proguard-core</artifactId>
            <version>9.1.3</version>
          </dependency>
        </dependencies>
        <configuration>
          <obfuscate>true</obfuscate>
          <injar>test-classes-obfuscated-injar</injar>
          <outjar>test-classes-obfuscated-outjar</outjar>
          <inFilter>**/*.class</inFilter>
          <proguardInclude>${project.basedir}/src/test/resources/testcases-proguard.conf</proguardInclude>
          <libs>
            <lib>${project.build.directory}/classes</lib>
            <lib>${java.home}/jmods/java.base.jmod</lib>
          </libs>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <version>3.3.1</version>
        <executions>
          <execution>
            <id>post-obfuscate-class</id>
            <phase>process-test-classes</phase>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <outputDirectory>${project.build.directory}/test-classes/com/google/gson/functional</outputDirectory>
              <resources>
                <resource>
                  <directory>${project.build.directory}/test-classes-obfuscated-outjar/com/google/gson/functional</directory>
                  <includes>
                    <include>EnumWithObfuscatedTest.class</include>
                    <include>EnumWithObfuscatedTest$Gender.class</include>
                  </includes>
                </resource>
              </resources>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <!--
        Plugins for building / modifying artifacts
      -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <archive>
            <!-- Use existing manifest generated by BND plugin -->
            <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
          </archive>
        </configuration>
      </plugin>
      <!-- Add module-info to JAR, see https://github.com/moditect/moditect#adding-module-descriptors-to-existing-jar-files -->
      <!-- Uses ModiTect instead of separate maven-compiler-plugin executions
        for better Eclipse IDE support, see https://github.com/eclipse-m2e/m2e-core/issues/393 -->
      <!-- Note: For some reason this has to be executed before javadoc plugin; otherwise `javadoc:jar` goal fails
        to find source files -->
      <plugin>
        <groupId>org.moditect</groupId>
        <artifactId>moditect-maven-plugin</artifactId>
        <version>1.2.1.Final</version>
        <executions>
          <execution>
            <id>add-module-info</id>
            <phase>package</phase>
            <goals>
              <goal>add-module-info</goal>
            </goals>
            <configuration>
              <jvmVersion>9</jvmVersion>
              <module>
                <moduleInfoFile>${project.build.sourceDirectory}/module-info.java</moduleInfoFile>
              </module>
              <!-- Overwrite the previously generated JAR file, if any -->
              <overwriteExistingFiles>true</overwriteExistingFiles>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <!-- Note: Javadoc plugin has to be run in combination with >= `package` phase,
        e.g. `mvn package javadoc:javadoc`, otherwise it fails with
        "Aggregator report contains named and unnamed modules" -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <configuration>
          <excludePackageNames>com.google.gson.internal:com.google.gson.internal.bind</excludePackageNames>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <profiles>
    <profile>
      <id>JDK17</id>
      <activation>
        <jdk>[17,)</jdk>
      </activation>
      <properties>
        <maven.compiler.testRelease>17</maven.compiler.testRelease>
        <excludeTestCompilation />
      </properties>
    </profile>
  </profiles>
</project>




© 2015 - 2024 Weber Informatics LLC | Privacy Policy