Remove layout parameters from build-image Maven goal
This commit removes the `layout` and `layoutFactory` parameters from the `build-image` goal in the Maven plugin while retaining them for the `repackage` goal. The `build-image` goal currently only supports jar archives, so allowing other layout types to be configured for the goal could cause confusion. Fixes gh-24105
This commit is contained in:
parent
7cbd57b635
commit
a302238e21
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2012-2020 the original author or authors.
|
* Copyright 2012-2021 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -53,6 +53,7 @@ import org.springframework.boot.loader.tools.layer.CustomLayers;
|
||||||
* Abstract base class for classes that work with an {@link Packager}.
|
* Abstract base class for classes that work with an {@link Packager}.
|
||||||
*
|
*
|
||||||
* @author Phillip Webb
|
* @author Phillip Webb
|
||||||
|
* @author Scott Frederick
|
||||||
* @since 2.3.0
|
* @since 2.3.0
|
||||||
*/
|
*/
|
||||||
public abstract class AbstractPackagerMojo extends AbstractDependencyFilterMojo {
|
public abstract class AbstractPackagerMojo extends AbstractDependencyFilterMojo {
|
||||||
|
|
@ -81,24 +82,6 @@ public abstract class AbstractPackagerMojo extends AbstractDependencyFilterMojo
|
||||||
@Parameter
|
@Parameter
|
||||||
private String mainClass;
|
private String mainClass;
|
||||||
|
|
||||||
/**
|
|
||||||
* The type of archive (which corresponds to how the dependencies are laid out inside
|
|
||||||
* it). Possible values are {@code JAR}, {@code WAR}, {@code ZIP}, {@code DIR},
|
|
||||||
* {@code NONE}. Defaults to a guess based on the archive type.
|
|
||||||
* @since 1.0.0
|
|
||||||
*/
|
|
||||||
@Parameter(property = "spring-boot.repackage.layout")
|
|
||||||
private LayoutType layout;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The layout factory that will be used to create the executable archive if no
|
|
||||||
* explicit layout is set. Alternative layouts implementations can be provided by 3rd
|
|
||||||
* parties.
|
|
||||||
* @since 1.5.0
|
|
||||||
*/
|
|
||||||
@Parameter
|
|
||||||
private LayoutFactory layoutFactory;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Exclude Spring Boot devtools from the repackaged archive.
|
* Exclude Spring Boot devtools from the repackaged archive.
|
||||||
* @since 1.3.0
|
* @since 1.3.0
|
||||||
|
|
@ -121,6 +104,24 @@ public abstract class AbstractPackagerMojo extends AbstractDependencyFilterMojo
|
||||||
@Parameter
|
@Parameter
|
||||||
private Layers layers;
|
private Layers layers;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the type of archive that should be packaged by this MOJO.
|
||||||
|
* @return {@code null}, indicating a layout type will be chosen based on the original
|
||||||
|
* archive type
|
||||||
|
*/
|
||||||
|
protected LayoutType getLayout() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the layout factory that will be used to determine the {@link LayoutType} if
|
||||||
|
* no explicit layout is set.
|
||||||
|
* @return {@code null}, indicating a default layout factory will be chosen
|
||||||
|
*/
|
||||||
|
protected LayoutFactory getLayoutFactory() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return a {@link Packager} configured for this MOJO.
|
* Return a {@link Packager} configured for this MOJO.
|
||||||
* @param <P> the packager type
|
* @param <P> the packager type
|
||||||
|
|
@ -129,12 +130,13 @@ public abstract class AbstractPackagerMojo extends AbstractDependencyFilterMojo
|
||||||
*/
|
*/
|
||||||
protected <P extends Packager> P getConfiguredPackager(Supplier<P> supplier) {
|
protected <P extends Packager> P getConfiguredPackager(Supplier<P> supplier) {
|
||||||
P packager = supplier.get();
|
P packager = supplier.get();
|
||||||
packager.setLayoutFactory(this.layoutFactory);
|
packager.setLayoutFactory(getLayoutFactory());
|
||||||
packager.addMainClassTimeoutWarningListener(new LoggingMainClassTimeoutWarningListener(this::getLog));
|
packager.addMainClassTimeoutWarningListener(new LoggingMainClassTimeoutWarningListener(this::getLog));
|
||||||
packager.setMainClass(this.mainClass);
|
packager.setMainClass(this.mainClass);
|
||||||
if (this.layout != null) {
|
LayoutType layout = getLayout();
|
||||||
getLog().info("Layout: " + this.layout);
|
if (layout != null) {
|
||||||
packager.setLayout(this.layout.layout());
|
getLog().info("Layout: " + layout);
|
||||||
|
packager.setLayout(layout.layout());
|
||||||
}
|
}
|
||||||
if (this.layers != null && this.layers.isEnabled()) {
|
if (this.layers != null && this.layers.isEnabled()) {
|
||||||
packager.setLayers((this.layers.getConfiguration() != null)
|
packager.setLayers((this.layers.getConfiguration() != null)
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2012-2020 the original author or authors.
|
* Copyright 2012-2021 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -36,6 +36,7 @@ import org.apache.maven.plugins.annotations.ResolutionScope;
|
||||||
|
|
||||||
import org.springframework.boot.loader.tools.DefaultLaunchScript;
|
import org.springframework.boot.loader.tools.DefaultLaunchScript;
|
||||||
import org.springframework.boot.loader.tools.LaunchScript;
|
import org.springframework.boot.loader.tools.LaunchScript;
|
||||||
|
import org.springframework.boot.loader.tools.LayoutFactory;
|
||||||
import org.springframework.boot.loader.tools.Libraries;
|
import org.springframework.boot.loader.tools.Libraries;
|
||||||
import org.springframework.boot.loader.tools.Repackager;
|
import org.springframework.boot.loader.tools.Repackager;
|
||||||
|
|
||||||
|
|
@ -48,6 +49,7 @@ import org.springframework.boot.loader.tools.Repackager;
|
||||||
* @author Dave Syer
|
* @author Dave Syer
|
||||||
* @author Stephane Nicoll
|
* @author Stephane Nicoll
|
||||||
* @author Björn Lindström
|
* @author Björn Lindström
|
||||||
|
* @author Scott Frederick
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
@Mojo(name = "repackage", defaultPhase = LifecyclePhase.PACKAGE, requiresProject = true, threadSafe = true,
|
@Mojo(name = "repackage", defaultPhase = LifecyclePhase.PACKAGE, requiresProject = true, threadSafe = true,
|
||||||
|
|
@ -152,6 +154,45 @@ public class RepackageMojo extends AbstractPackagerMojo {
|
||||||
@Parameter(defaultValue = "${project.build.outputTimestamp}")
|
@Parameter(defaultValue = "${project.build.outputTimestamp}")
|
||||||
private String outputTimestamp;
|
private String outputTimestamp;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The type of archive (which corresponds to how the dependencies are laid out inside
|
||||||
|
* it). Possible values are {@code JAR}, {@code WAR}, {@code ZIP}, {@code DIR},
|
||||||
|
* {@code NONE}. Defaults to a guess based on the archive type.
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
@Parameter(property = "spring-boot.repackage.layout")
|
||||||
|
private LayoutType layout;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The layout factory that will be used to create the executable archive if no
|
||||||
|
* explicit layout is set. Alternative layouts implementations can be provided by 3rd
|
||||||
|
* parties.
|
||||||
|
* @since 1.5.0
|
||||||
|
*/
|
||||||
|
@Parameter
|
||||||
|
private LayoutFactory layoutFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the type of archive that should be packaged by this MOJO.
|
||||||
|
* @return the value of the {@code layout} parameter, or {@code null} if the parameter
|
||||||
|
* is not provided
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected LayoutType getLayout() {
|
||||||
|
return this.layout;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the layout factory that will be used to determine the {@link LayoutType} if
|
||||||
|
* no explicit layout is set.
|
||||||
|
* @return the value of the {@code layoutFactory} parameter, or {@code null} if the
|
||||||
|
* parameter is not provided
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected LayoutFactory getLayoutFactory() {
|
||||||
|
return this.layoutFactory;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute() throws MojoExecutionException, MojoFailureException {
|
public void execute() throws MojoExecutionException, MojoFailureException {
|
||||||
if (this.project.getPackaging().equals("pom")) {
|
if (this.project.getPackaging().equals("pom")) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue