This adds build caching and build scans. The changes required disabling scans when using the maven invoker plugin in order to not cause duplicate build scans when invoking other maven builds. There is also an empty `.mvn` folder in the spring-boot-starters project to prevent duplicate build scans as well since there is no way to pass properties to the maven-javadoc-plugin. The checkstyle plugin was causing a cache miss with the `propertyExpansion` because it contains an absolute path. The absolute path is now ignored and instead the files are added as inputs to the checkstyle plugin. This only enables the local build cache. The remote cache is not yet enabled. On my local machine: ./mvnw clean install build times go from about 30 minutes to about 10 minutes. ./mvnw clean install -Pfull build times go from about 60 minutes to about 13 minutes. See gh-22089
288 lines
8.4 KiB
XML
288 lines
8.4 KiB
XML
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
<modelVersion>4.0.0</modelVersion>
|
|
<groupId>org.springframework.boot</groupId>
|
|
<artifactId>spring-boot-build</artifactId>
|
|
<version>${revision}</version>
|
|
<packaging>pom</packaging>
|
|
<name>Spring Boot Build</name>
|
|
<description>Spring Boot Build</description>
|
|
<properties>
|
|
<revision>2.1.17.BUILD-SNAPSHOT</revision>
|
|
<main.basedir>${basedir}</main.basedir>
|
|
</properties>
|
|
<!-- Most elements are in profiles so they are stripped out during maven-flatten -->
|
|
<profiles>
|
|
<!-- Default profile for command line build -->
|
|
<profile>
|
|
<id>default</id>
|
|
<activation>
|
|
<property>
|
|
<name>!disable-spring-boot-default-profile</name>
|
|
</property>
|
|
</activation>
|
|
<properties>
|
|
<spring-javaformat.version>0.0.22</spring-javaformat.version>
|
|
<nohttp-checkstyle.version>0.0.4.RELEASE</nohttp-checkstyle.version>
|
|
</properties>
|
|
<build>
|
|
<plugins>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-checkstyle-plugin</artifactId>
|
|
<version>3.1.0</version>
|
|
<dependencies>
|
|
<dependency>
|
|
<groupId>com.puppycrawl.tools</groupId>
|
|
<artifactId>checkstyle</artifactId>
|
|
<version>8.29</version>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>io.spring.javaformat</groupId>
|
|
<artifactId>spring-javaformat-checkstyle</artifactId>
|
|
<version>${spring-javaformat.version}</version>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>io.spring.nohttp</groupId>
|
|
<artifactId>nohttp-checkstyle</artifactId>
|
|
<version>${nohttp-checkstyle.version}</version>
|
|
</dependency>
|
|
</dependencies>
|
|
<executions>
|
|
<execution>
|
|
<id>checkstyle-validation</id>
|
|
<phase>validate</phase>
|
|
<configuration>
|
|
<skip>${disable.checks}</skip>
|
|
<configLocation>src/checkstyle/checkstyle.xml</configLocation>
|
|
<suppressionsLocation>src/checkstyle/checkstyle-suppressions.xml</suppressionsLocation>
|
|
<includeTestSourceDirectory>true</includeTestSourceDirectory>
|
|
<propertyExpansion>main.basedir=${main.basedir}</propertyExpansion>
|
|
<encoding>UTF-8</encoding>
|
|
</configuration>
|
|
<goals>
|
|
<goal>check</goal>
|
|
</goals>
|
|
</execution>
|
|
<execution>
|
|
<id>nohttp-checkstyle-validation</id>
|
|
<phase>validate</phase>
|
|
<configuration>
|
|
<skip>${disable.checks}</skip>
|
|
<configLocation>src/checkstyle/nohttp-checkstyle.xml</configLocation>
|
|
<suppressionsLocation>src/checkstyle/nohttp-checkstyle-suppressions.xml</suppressionsLocation>
|
|
<propertyExpansion>main.basedir=${main.basedir}</propertyExpansion>
|
|
<encoding>UTF-8</encoding>
|
|
<sourceDirectories>${basedir}</sourceDirectories>
|
|
<includes>**/*</includes>
|
|
<excludes>**/.git/**/*,**/target/**/,**/.flattened-pom.xml,**/*.class,**/spring-boot-gradle-plugin/build/**</excludes>
|
|
</configuration>
|
|
<goals>
|
|
<goal>check</goal>
|
|
</goals>
|
|
<inherited>false</inherited>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>io.spring.javaformat</groupId>
|
|
<artifactId>spring-javaformat-maven-plugin</artifactId>
|
|
<version>${spring-javaformat.version}</version>
|
|
<executions>
|
|
<execution>
|
|
<phase>validate</phase>
|
|
<configuration>
|
|
<skip>${disable.checks}</skip>
|
|
</configuration>
|
|
<goals>
|
|
<goal>validate</goal>
|
|
</goals>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
</plugins>
|
|
</build>
|
|
<modules>
|
|
<module>spring-boot-project</module>
|
|
<!-- Samples are built via the invoker plugin -->
|
|
<module>spring-boot-samples-invoker</module>
|
|
<module>spring-boot-tests</module>
|
|
</modules>
|
|
</profile>
|
|
<!-- M2E profile to allow easy import into Eclipse -->
|
|
<profile>
|
|
<id>m2e</id>
|
|
<activation>
|
|
<property>
|
|
<name>m2e.version</name>
|
|
</property>
|
|
</activation>
|
|
<modules>
|
|
<module>spring-boot-project</module>
|
|
<module>spring-boot-samples</module>
|
|
<module>spring-boot-tests</module>
|
|
</modules>
|
|
</profile>
|
|
<profile>
|
|
<id>repository</id>
|
|
<activation>
|
|
<property>
|
|
<name>repository</name>
|
|
</property>
|
|
</activation>
|
|
<repositories>
|
|
<repository>
|
|
<id>repository</id>
|
|
<url>${repository}</url>
|
|
<snapshots>
|
|
<enabled>true</enabled>
|
|
</snapshots>
|
|
</repository>
|
|
</repositories>
|
|
<pluginRepositories>
|
|
<pluginRepository>
|
|
<id>repository</id>
|
|
<url>${repository}</url>
|
|
<snapshots>
|
|
<enabled>true</enabled>
|
|
</snapshots>
|
|
</pluginRepository>
|
|
</pluginRepositories>
|
|
</profile>
|
|
</profiles>
|
|
<repositories>
|
|
<!-- Repositories to allow snapshot and milestone BOM imports during development.
|
|
This section is stripped by the flatten plugin during install/deploy. -->
|
|
<repository>
|
|
<id>central</id>
|
|
<url>https://repo.maven.apache.org/maven2</url>
|
|
<snapshots>
|
|
<enabled>false</enabled>
|
|
</snapshots>
|
|
</repository>
|
|
<repository>
|
|
<id>spring-milestone</id>
|
|
<name>Spring Milestone</name>
|
|
<url>https://repo.spring.io/milestone</url>
|
|
<snapshots>
|
|
<enabled>false</enabled>
|
|
</snapshots>
|
|
</repository>
|
|
<repository>
|
|
<id>spring-snapshot</id>
|
|
<name>Spring Snapshot</name>
|
|
<url>https://repo.spring.io/snapshot</url>
|
|
<snapshots>
|
|
<enabled>true</enabled>
|
|
</snapshots>
|
|
</repository>
|
|
<repository>
|
|
<id>rabbit-milestone</id>
|
|
<name>Rabbit Milestone</name>
|
|
<url>https://dl.bintray.com/rabbitmq/maven-milestones</url>
|
|
<snapshots>
|
|
<enabled>false</enabled>
|
|
</snapshots>
|
|
</repository>
|
|
</repositories>
|
|
<pluginRepositories>
|
|
<pluginRepository>
|
|
<id>central</id>
|
|
<url>https://repo.maven.apache.org/maven2</url>
|
|
<snapshots>
|
|
<enabled>false</enabled>
|
|
</snapshots>
|
|
</pluginRepository>
|
|
<pluginRepository>
|
|
<id>spring-milestone</id>
|
|
<name>Spring Milestone</name>
|
|
<url>https://repo.spring.io/milestone</url>
|
|
<snapshots>
|
|
<enabled>false</enabled>
|
|
</snapshots>
|
|
</pluginRepository>
|
|
<pluginRepository>
|
|
<id>spring-snapshot</id>
|
|
<name>Spring Snapshot</name>
|
|
<url>https://repo.spring.io/snapshot</url>
|
|
<snapshots>
|
|
<enabled>true</enabled>
|
|
</snapshots>
|
|
</pluginRepository>
|
|
</pluginRepositories>
|
|
<build>
|
|
<pluginManagement>
|
|
<plugins>
|
|
<!-- This plugin's configuration is used to store Eclipse m2e settings
|
|
only. It has no influence on the Maven build itself. -->
|
|
<plugin>
|
|
<groupId>org.eclipse.m2e</groupId>
|
|
<artifactId>lifecycle-mapping</artifactId>
|
|
<version>1.0.0</version>
|
|
<configuration>
|
|
<lifecycleMappingMetadata>
|
|
<pluginExecutions>
|
|
<pluginExecution>
|
|
<pluginExecutionFilter>
|
|
<groupId>
|
|
org.jetbrains.kotlin
|
|
</groupId>
|
|
<artifactId>
|
|
kotlin-maven-plugin
|
|
</artifactId>
|
|
<versionRange>
|
|
[1.1.51,)
|
|
</versionRange>
|
|
<goals>
|
|
<goal>compile</goal>
|
|
<goal>test-compile</goal>
|
|
</goals>
|
|
</pluginExecutionFilter>
|
|
<action>
|
|
<ignore></ignore>
|
|
</action>
|
|
</pluginExecution>
|
|
</pluginExecutions>
|
|
</lifecycleMappingMetadata>
|
|
</configuration>
|
|
</plugin>
|
|
</plugins>
|
|
</pluginManagement>
|
|
<plugins>
|
|
<plugin>
|
|
<groupId>com.gradle</groupId>
|
|
<artifactId>gradle-enterprise-maven-extension</artifactId>
|
|
<!-- There is a build warning because we don't specify the version here. We do this instead of specifying the verison number twice -->
|
|
<configuration>
|
|
<gradleEnterprise>
|
|
<plugins>
|
|
<plugin>
|
|
<artifactId>maven-checkstyle-plugin</artifactId>
|
|
<inputs>
|
|
<fileSets>
|
|
<fileSet>
|
|
<name>allowlist</name>
|
|
<paths>
|
|
<path>${main.basedir}/src/checkstyle</path>
|
|
</paths>
|
|
<normalization>RELATIVE_PATH</normalization>
|
|
</fileSet>
|
|
</fileSets>
|
|
<properties>
|
|
<property>
|
|
<name>propertyExpansion</name>
|
|
<value>ignoredValue</value>
|
|
</property>
|
|
</properties>
|
|
</inputs>
|
|
</plugin>
|
|
</plugins>
|
|
</gradleEnterprise>
|
|
</configuration>
|
|
</plugin>
|
|
</plugins>
|
|
</build>
|
|
</project>
|