This is an automated email from the ASF dual-hosted git repository. cstamas pushed a commit to branch MDEPLOY-308 in repository https://gitbox.apache.org/repos/asf/maven-deploy-plugin.git
commit 940c6bef663215a2232eeec1f3e87bf2cf5afa45 Author: Tamas Cservenak <[email protected]> AuthorDate: Tue Mar 21 14:10:49 2023 +0100 [MDEPLOY-308] Add parameter to lax project validation --- https://issues.apache.org/jira/browse/MDEPLOY-308 --- .../apache/maven/plugins/deploy/DeployMojo.java | 26 ++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/apache/maven/plugins/deploy/DeployMojo.java b/src/main/java/org/apache/maven/plugins/deploy/DeployMojo.java index 4e317ac..82af0da 100644 --- a/src/main/java/org/apache/maven/plugins/deploy/DeployMojo.java +++ b/src/main/java/org/apache/maven/plugins/deploy/DeployMojo.java @@ -126,6 +126,18 @@ public class DeployMojo extends AbstractDeployMojo { @Parameter(property = "maven.deploy.skip", defaultValue = "false") private String skip = Boolean.FALSE.toString(); + /** + * Set this to <code>true</code> to allow incomplete project processing. By default, such projects are forbidden + * and Mojo will fail to process them. Incomplete project is a Maven Project that has any other packaging than + * "pom" and has no main artifact packaged. In the majority of cases, what user really wants here is a project + * with "pom" packaging and some classified artifact attached (typical example is some assembly being packaged + * and attached with classifier). + * + * @since 3.1.1 + */ + @Parameter(defaultValue = "false", property = "allowIncompleteProjects") + private boolean allowIncompleteProjects; + private enum State { SKIPPED, DEPLOYED, @@ -285,8 +297,18 @@ public class DeployMojo extends AbstractDeployMojo { if (isFile(mavenMainArtifact.getFile())) { request.addArtifact(RepositoryUtils.toArtifact(mavenMainArtifact)); } else if (!project.getAttachedArtifacts().isEmpty()) { - throw new MojoExecutionException("The packaging plugin for this project did not assign " - + "a main file to the project but it has attachments. Change packaging to 'pom'."); + if (allowIncompleteProjects) { + getLog().warn( "" ); + getLog().warn( "The packaging plugin for this project did not assign" ); + getLog().warn( "a main file to the project but it has attachments. Change packaging to 'pom'." ); + getLog().warn( "" ); + getLog().warn( "Incomplete projects like this will fail in future Maven versions!" ); + getLog().warn( "" ); + } else + { + throw new MojoExecutionException( "The packaging plugin for this project did not assign " + + "a main file to the project but it has attachments. Change packaging to 'pom'." ); + } } else { throw new MojoExecutionException( "The packaging for this project did not assign a file to the build artifact");
