diff --git a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/InfoContributorAutoConfiguration.java b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/InfoContributorAutoConfiguration.java index 97f4fff96c..986850998e 100644 --- a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/InfoContributorAutoConfiguration.java +++ b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/InfoContributorAutoConfiguration.java @@ -82,8 +82,7 @@ public class InfoContributorAutoConfiguration { @ConditionalOnSingleCandidate(BuildProperties.class) @Order(DEFAULT_ORDER) public InfoContributor buildInfoContributor(BuildProperties buildProperties) { - return new BuildInfoContributor(buildProperties, - this.properties.getBuild().getMode()); + return new BuildInfoContributor(buildProperties); } } diff --git a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/InfoContributorProperties.java b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/InfoContributorProperties.java index f79de0632e..a190908ad3 100644 --- a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/InfoContributorProperties.java +++ b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/InfoContributorProperties.java @@ -16,7 +16,6 @@ package org.springframework.boot.actuate.autoconfigure; -import org.springframework.boot.actuate.info.BuildInfoContributor; import org.springframework.boot.actuate.info.GitInfoContributor; import org.springframework.boot.context.properties.ConfigurationProperties; @@ -29,34 +28,12 @@ import org.springframework.boot.context.properties.ConfigurationProperties; @ConfigurationProperties("management.info") public class InfoContributorProperties { - private final Build build = new Build(); - private final Git git = new Git(); - public Build getBuild() { - return this.build; - } - public Git getGit() { return this.git; } - public static class Build { - - /** - * Mode to use to expose build information. - */ - private BuildInfoContributor.Mode mode = BuildInfoContributor.Mode.SIMPLE; - - public BuildInfoContributor.Mode getMode() { - return this.mode; - } - - public void setMode(BuildInfoContributor.Mode mode) { - this.mode = mode; - } - - } public static class Git { diff --git a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/InfoEndpoint.java b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/InfoEndpoint.java index a9d1696e19..9b1c108d14 100644 --- a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/InfoEndpoint.java +++ b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/InfoEndpoint.java @@ -33,7 +33,7 @@ import org.springframework.util.Assert; * @author Stephane Nicoll */ @ConfigurationProperties(prefix = "endpoints.info") -public class InfoEndpoint extends AbstractEndpoint { +public class InfoEndpoint extends AbstractEndpoint> { private final List infoContributors; @@ -48,13 +48,14 @@ public class InfoEndpoint extends AbstractEndpoint { } @Override - public Info invoke() { + public Map invoke() { Info.Builder builder = new Info.Builder(); for (InfoContributor contributor : this.infoContributors) { contributor.contribute(builder); } builder.withDetails(getAdditionalInfo()); - return builder.build(); + Info build = builder.build(); + return build.getDetails(); } /** diff --git a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/BuildInfoContributor.java b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/BuildInfoContributor.java index 6e158d6bd5..19e1b480ad 100644 --- a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/BuildInfoContributor.java +++ b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/BuildInfoContributor.java @@ -31,12 +31,8 @@ import org.springframework.core.env.PropertySource; */ public class BuildInfoContributor extends InfoPropertiesInfoContributor { - public BuildInfoContributor(BuildProperties properties, Mode mode) { - super(properties, mode); - } - public BuildInfoContributor(BuildProperties properties) { - this(properties, Mode.SIMPLE); + super(properties, Mode.FULL); } @Override diff --git a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/Info.java b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/Info.java index d8267c065e..41e5f84b18 100644 --- a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/Info.java +++ b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/Info.java @@ -16,6 +16,7 @@ package org.springframework.boot.actuate.info; +import java.util.Collections; import java.util.LinkedHashMap; import java.util.Map; @@ -39,8 +40,9 @@ public final class Info { private final Map details; private Info(Builder builder) { - this.details = new LinkedHashMap(); - this.details.putAll(builder.content); + LinkedHashMap content = new LinkedHashMap(); + content.putAll(builder.content); + this.details = Collections.unmodifiableMap(content); } /** diff --git a/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/autoconfigure/EndpointAutoConfigurationTests.java b/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/autoconfigure/EndpointAutoConfigurationTests.java index 74e91341fb..7d5a7606d1 100644 --- a/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/autoconfigure/EndpointAutoConfigurationTests.java +++ b/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/autoconfigure/EndpointAutoConfigurationTests.java @@ -187,7 +187,7 @@ public class EndpointAutoConfigurationTests { this.context.refresh(); InfoEndpoint endpoint = this.context.getBean(InfoEndpoint.class); - Info info = endpoint.invoke(); + Map info = endpoint.invoke(); assertThat(info).isNotNull(); assertThat(info.get("name")).isEqualTo("foo"); assertThat(info.get("version")).isEqualTo("1.0"); diff --git a/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/autoconfigure/InfoContributorAutoConfigurationTests.java b/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/autoconfigure/InfoContributorAutoConfigurationTests.java index 929139021a..881365ec36 100644 --- a/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/autoconfigure/InfoContributorAutoConfigurationTests.java +++ b/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/autoconfigure/InfoContributorAutoConfigurationTests.java @@ -115,7 +115,7 @@ public class InfoContributorAutoConfigurationTests { @SuppressWarnings("unchecked") @Test - public void buildPropertiesDefaultMode() { + public void buildProperties() { load(BuildPropertiesConfiguration.class); Map beans = this.context .getBeansOfType(InfoContributor.class); @@ -125,18 +125,6 @@ public class InfoContributorAutoConfigurationTests { Object build = content.get("build"); assertThat(build).isInstanceOf(Map.class); Map buildInfo = (Map) build; - assertThat(buildInfo).containsOnlyKeys("group", "artifact"); - } - - @SuppressWarnings("unchecked") - @Test - public void buildPropertiesFullMode() { - load(BuildPropertiesConfiguration.class, "management.info.build.mode=full"); - Map content = invokeContributor( - this.context.getBean("buildInfoContributor", InfoContributor.class)); - Object build = content.get("build"); - assertThat(build).isInstanceOf(Map.class); - Map buildInfo = (Map) build; assertThat(buildInfo).containsOnlyKeys("group", "artifact", "foo"); assertThat(buildInfo.get("foo")).isEqualTo("bar"); } diff --git a/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/InfoEndpointTests.java b/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/InfoEndpointTests.java index b76a74061d..20dafc229d 100644 --- a/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/InfoEndpointTests.java +++ b/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/InfoEndpointTests.java @@ -17,6 +17,7 @@ package org.springframework.boot.actuate.endpoint; import java.util.List; +import java.util.Map; import org.junit.Test; @@ -43,7 +44,7 @@ public class InfoEndpointTests extends AbstractEndpointTests { @Test public void invoke() throws Exception { - Info actual = getEndpointBean().invoke(); + Map actual = getEndpointBean().invoke(); assertThat(actual.get("key1")).isEqualTo("value1"); } diff --git a/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/info/InfoTests.java b/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/info/InfoTests.java new file mode 100644 index 0000000000..e15f6fcf9f --- /dev/null +++ b/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/info/InfoTests.java @@ -0,0 +1,53 @@ +/* + * Copyright 2012-2016 the original author or authors. + * + * 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. + */ + +package org.springframework.boot.actuate.info; + +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.entry; + +/** + * Tests for {@link Info}. + * + * @author Stephane Nicoll + */ +public class InfoTests { + + @Rule + public ExpectedException thrown = ExpectedException.none(); + + @Test + public void infoIsImmutable() { + Info info = new Info.Builder().withDetail("foo", "bar").build(); + + this.thrown.expect(UnsupportedOperationException.class); + info.getDetails().clear(); + } + + @Test + public void infoTakesCopyOfMap() { + Info.Builder builder = new Info.Builder(); + builder.withDetail("foo", "bar"); + Info build = builder.build(); + builder.withDetail("biz", "bar"); + assertThat(build.getDetails()).containsOnly(entry("foo", "bar")); + } + +} diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/info/ProjectInfoAutoConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/info/ProjectInfoAutoConfiguration.java index faf55105d8..3304988755 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/info/ProjectInfoAutoConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/info/ProjectInfoAutoConfiguration.java @@ -62,7 +62,7 @@ public class ProjectInfoAutoConfiguration { return new GitProperties(loadFrom(this.properties.getGit().getLocation(), "git")); } - @ConditionalOnResource(resources = "${spring.info.build.location:classpath:META-INF/boot/build.properties}") + @ConditionalOnResource(resources = "${spring.info.build.location:classpath:META-INF/build-info.properties}") @ConditionalOnMissingBean @Bean public BuildProperties buildProperties() throws Exception { diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/info/ProjectInfoProperties.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/info/ProjectInfoProperties.java index 34cc5086c6..7ab0c521a6 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/info/ProjectInfoProperties.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/info/ProjectInfoProperties.java @@ -59,10 +59,10 @@ public class ProjectInfoProperties { public static class Build { /** - * Location of the generated build.properties file. + * Location of the generated build-info.properties file. */ private Resource location = new ClassPathResource( - "META-INF/boot/build.properties"); + "META-INF/build-info.properties"); public Resource getLocation() { return this.location; diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/info/ProjectInfoAutoConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/info/ProjectInfoAutoConfigurationTests.java index 98278131b7..4d9f52a453 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/info/ProjectInfoAutoConfigurationTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/info/ProjectInfoAutoConfigurationTests.java @@ -105,7 +105,7 @@ public class ProjectInfoAutoConfigurationTests { @Test public void buildPropertiesCustomLocation() { - load("spring.info.build.location=classpath:/org/springframework/boot/autoconfigure/info/build.properties"); + load("spring.info.build.location=classpath:/org/springframework/boot/autoconfigure/info/build-info.properties"); BuildProperties buildProperties = this.context.getBean(BuildProperties.class); assertThat(buildProperties.getGroup()).isEqualTo("com.example.acme"); assertThat(buildProperties.getArtifact()).isEqualTo("acme"); @@ -116,7 +116,7 @@ public class ProjectInfoAutoConfigurationTests { @Test public void buildPropertiesCustomInvalidLocation() { - load("spring.info.build.location=classpath:/org/acme/no-build.properties"); + load("spring.info.build.location=classpath:/org/acme/no-build-info.properties"); Map beans = this.context .getBeansOfType(BuildProperties.class); assertThat(beans).hasSize(0); diff --git a/spring-boot-autoconfigure/src/test/resources/META-INF/boot/build.properties b/spring-boot-autoconfigure/src/test/resources/META-INF/build-info.properties similarity index 100% rename from spring-boot-autoconfigure/src/test/resources/META-INF/boot/build.properties rename to spring-boot-autoconfigure/src/test/resources/META-INF/build-info.properties diff --git a/spring-boot-autoconfigure/src/test/resources/org/springframework/boot/autoconfigure/info/build.properties b/spring-boot-autoconfigure/src/test/resources/org/springframework/boot/autoconfigure/info/build-info.properties similarity index 100% rename from spring-boot-autoconfigure/src/test/resources/org/springframework/boot/autoconfigure/info/build.properties rename to spring-boot-autoconfigure/src/test/resources/org/springframework/boot/autoconfigure/info/build-info.properties diff --git a/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc b/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc index 67401c8dcb..7240e3573c 100644 --- a/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc +++ b/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc @@ -86,7 +86,7 @@ content into your application; rather pick only the properties that you need. spring.hazelcast.config= # The location of the configuration file to use to initialize Hazelcast. # PROJECT INFORMATION ({sc-spring-boot-autoconfigure}/info/ProjectInfoProperties.{sc-ext}[ProjectInfoProperties]) - spring.info.build.location=classpath:META-INF/boot/build.properties # Location of the generated build.properties file. + spring.info.build.location=classpath:META-INF/build-info.properties # Location of the generated build-info.properties file. spring.info.git.location=classpath:git.properties # Location of the generated git.properties file. # JMX @@ -1015,7 +1015,6 @@ content into your application; rather pick only the properties that you need. # INFO CONTRIBUTORS ({sc-spring-boot-actuator}/autoconfigure/InfoContributorProperties.{sc-ext}[InfoContributorProperties]) management.info.build.enabled=true # Enable build info. - management.info.build.mode=simple # Mode to use to expose build information. management.info.defaults.enabled=true # Enable default info contributors. management.info.env.enabled=true # Enable environment info. management.info.git.enabled=true # Enable git info. diff --git a/spring-boot-docs/src/main/asciidoc/production-ready-features.adoc b/spring-boot-docs/src/main/asciidoc/production-ready-features.adoc index aa333422b5..89638b5e7f 100644 --- a/spring-boot-docs/src/main/asciidoc/production-ready-features.adoc +++ b/spring-boot-docs/src/main/asciidoc/production-ready-features.adoc @@ -393,7 +393,7 @@ The following `InfoContributors` are auto-configured by Spring Boot when appropr |Expose git information if a `git.properties` file is available. |{sc-spring-boot-actuator}/info/BuildInfoContributor.{sc-ext}[`BuildInfoContributor`] -|Expose build information if a `META-INF/boot/build.properties` file is available. +|Expose build information if a `META-INF/build-info.properties` file is available. |=== TIP: It is possible to disable them all using the `management.info.defaults.enabled` @@ -453,19 +453,12 @@ If you want to display the full git information (i.e. the full content of [[production-ready-application-info-build]] ==== Build information The `info` endpoint can also publish information about your build if a `BuildProperties` -bean is available. This happens if a `META-INF/boot/build.properties` file is available +bean is available. This happens if a `META-INF/build-info.properties` file is available in the classpath. TIP: The Maven and Gradle plugins can both generate that file, see <> for more details. -If additional properties are present they are not exposed unless configured explicitly: - -[source,properties,indent=0] ----- - management.info.build.mode=full ----- - [[production-ready-application-info-custom]] ==== Writing custom InfoContributors diff --git a/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/buildinfo/BuildInfo.java b/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/buildinfo/BuildInfo.java index 911a05cceb..3cb5105e7e 100644 --- a/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/buildinfo/BuildInfo.java +++ b/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/buildinfo/BuildInfo.java @@ -34,11 +34,11 @@ import org.springframework.boot.loader.tools.BuildPropertiesWriter; import org.springframework.boot.loader.tools.BuildPropertiesWriter.ProjectDetails; /** - * {@link DefaultTask} for generating a {@code build.properties} file from a + * {@link DefaultTask} for generating a {@code build-info.properties} file from a * {@code Project}. *

- * By default, the {@code build.properties} file is generated in - * project.buildDir/resources/main/META-INF/boot. + * By default, the {@code build-info.properties} file is generated in + * project.buildDir/resources/main/META-INF. *

* * @author Andy Wilkinson @@ -47,7 +47,7 @@ public class BuildInfo extends DefaultTask { @OutputFile private File outputFile = getProject().file(new File(getProject().getBuildDir(), - "resources/main/META-INF/boot/build.properties")); + "resources/main/META-INF/build-info.properties")); @Input private String projectGroup = getProject().getGroup().toString(); diff --git a/spring-boot-tools/spring-boot-loader-tools/src/main/java/org/springframework/boot/loader/tools/BuildPropertiesWriter.java b/spring-boot-tools/spring-boot-loader-tools/src/main/java/org/springframework/boot/loader/tools/BuildPropertiesWriter.java index 8a0ec51eaf..1757a95a60 100644 --- a/spring-boot-tools/spring-boot-loader-tools/src/main/java/org/springframework/boot/loader/tools/BuildPropertiesWriter.java +++ b/spring-boot-tools/spring-boot-loader-tools/src/main/java/org/springframework/boot/loader/tools/BuildPropertiesWriter.java @@ -25,8 +25,8 @@ import java.util.Map; import java.util.Properties; /** - * A {@code BuildPropertiesWriter} writes the {@code build.properties} for consumption by - * the Actuator. + * A {@code BuildPropertiesWriter} writes the {@code build-info.properties} for + * consumption by the Actuator. * * @author Andy Wilkinson * @author Stephane Nicoll diff --git a/spring-boot-tools/spring-boot-maven-plugin/src/it/build-info-additional-properties/verify.groovy b/spring-boot-tools/spring-boot-maven-plugin/src/it/build-info-additional-properties/verify.groovy index 0334589ebd..468ba36f5d 100644 --- a/spring-boot-tools/spring-boot-maven-plugin/src/it/build-info-additional-properties/verify.groovy +++ b/spring-boot-tools/spring-boot-maven-plugin/src/it/build-info-additional-properties/verify.groovy @@ -3,7 +3,7 @@ import org.springframework.boot.maven.Verify import static org.junit.Assert.assertEquals import static org.junit.Assert.assertTrue -def file = new File(basedir, "target/classes/META-INF/boot/build.properties") +def file = new File(basedir, "target/classes/META-INF/build-info.properties") println file.getAbsolutePath() Properties properties = Verify.verifyBuildInfo(file, 'org.springframework.boot.maven.it', 'build-info-additional-properties', diff --git a/spring-boot-tools/spring-boot-maven-plugin/src/it/build-info/verify.groovy b/spring-boot-tools/spring-boot-maven-plugin/src/it/build-info/verify.groovy index 81d248ce7b..71b9b2f1b9 100644 --- a/spring-boot-tools/spring-boot-maven-plugin/src/it/build-info/verify.groovy +++ b/spring-boot-tools/spring-boot-maven-plugin/src/it/build-info/verify.groovy @@ -2,7 +2,7 @@ import org.springframework.boot.maven.Verify import static org.junit.Assert.assertTrue -def file = new File(basedir, "target/classes/META-INF/boot/build.properties") +def file = new File(basedir, "target/classes/META-INF/build-info.properties") println file.getAbsolutePath() Properties properties = Verify.verifyBuildInfo(file, 'org.springframework.boot.maven.it', 'build-info', diff --git a/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/BuildInfoMojo.java b/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/BuildInfoMojo.java index 04f2ee2184..49a335c06d 100644 --- a/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/BuildInfoMojo.java +++ b/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/BuildInfoMojo.java @@ -31,7 +31,7 @@ import org.springframework.boot.loader.tools.BuildPropertiesWriter; import org.springframework.boot.loader.tools.BuildPropertiesWriter.ProjectDetails; /** - * Generate a {@code build.properties} file based the content of the current + * Generate a {@code build-info.properties} file based the content of the current * {@link MavenProject}. * * @author Stephane Nicoll @@ -47,14 +47,14 @@ public class BuildInfoMojo extends AbstractMojo { private MavenProject project; /** - * The location of the generated build.properties. + * The location of the generated build-info.properties. */ - @Parameter(defaultValue = "${project.build.outputDirectory}/META-INF/boot/build.properties") + @Parameter(defaultValue = "${project.build.outputDirectory}/META-INF/build-info.properties") private File outputFile; /** - * Additional properties to store in the build.properties. Each entry is prefixed by - * {@code build.} in the generated build.properties. + * Additional properties to store in the build-info.properties. Each entry is prefixed by + * {@code build.} in the generated build-info.properties. */ @Parameter private Map additionalProperties; diff --git a/spring-boot-tools/spring-boot-maven-plugin/src/site/apt/examples/build-info.apt.vm b/spring-boot-tools/spring-boot-maven-plugin/src/site/apt/examples/build-info.apt.vm index 477ef10ab4..359a55cabe 100644 --- a/spring-boot-tools/spring-boot-maven-plugin/src/site/apt/examples/build-info.apt.vm +++ b/spring-boot-tools/spring-boot-maven-plugin/src/site/apt/examples/build-info.apt.vm @@ -6,7 +6,7 @@ 2016-03-17 ----- - Spring Boot Actuator displays build-related information if a <<>> + Spring Boot Actuator displays build-related information if a <<>> file is present. The <<>> goal generates such file with the coordinates of the project and the build time. It also allows you to add an arbitrary number of additional properties: @@ -46,10 +46,10 @@ --- - This configuration will generate a <<>> at the expected location with four - additional keys. Note that <<>> and <<>> are - expected to be regular properties available in the project. They will be interpolated as you - would expect. + This configuration will generate a <<>> at the expected location with + four additional keys. Note that <<>> and <<>> + are expected to be regular properties available in the project. They will be interpolated as + you would expect.