From ab8da3f4436f143deaa88b6a4a9474494021f54d Mon Sep 17 00:00:00 2001 From: Burkhard Pauli Date: Wed, 6 May 2020 13:44:26 +0200 Subject: [PATCH 1/6] JCRVLT-434 - Allow classifier option for filevault-maven-plugin - add new parameter classifier in Vault and ValdiatePackage Mojo --- .../maven/packaging/ValidatePackageMojo.java | 39 +++++++++++++++++++--- .../filevault/maven/packaging/VaultMojo.java | 24 ++++++++++++- 2 files changed, 58 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatePackageMojo.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatePackageMojo.java index ecbbfc4..b668ff8 100644 --- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatePackageMojo.java +++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatePackageMojo.java @@ -23,6 +23,7 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.util.Collection; import java.util.LinkedList; +import java.util.List; import javax.xml.parsers.ParserConfigurationException; @@ -35,17 +36,19 @@ import org.apache.jackrabbit.vault.util.Constants; import org.apache.jackrabbit.vault.validation.ValidationExecutor; import org.apache.jackrabbit.vault.validation.ValidationViolation; import org.apache.jackrabbit.vault.validation.spi.ValidationMessageSeverity; +import org.apache.maven.artifact.Artifact; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.plugins.annotations.ResolutionScope; +import org.codehaus.plexus.util.StringUtils; import org.jetbrains.annotations.Nullable; import org.xml.sax.SAXException; -/** +/** * Validates the whole package with all registered validators. * @see Validators */ @@ -64,14 +67,30 @@ public class ValidatePackageMojo extends AbstractValidateMojo { /** If set to {@code true} will not validate any sub packages. This settings overwrites the parameter {@code enforceRecursiveSubpackageValidation}. */ @Parameter(required = true, defaultValue = "false") private boolean skipSubPackageValidation; - + + /** + * If given, the classifier will be used to get the package to be verified from the attached artifacts from the project with the same + * classifier. + */ + @Parameter + private String classifier; + public ValidatePackageMojo() { } @Override public void doExecute() throws MojoExecutionException, MojoFailureException { try { - validatePackage(packageFile); + if (StringUtils.isNotEmpty(classifier)) { + Artifact artifact = getArtifact(classifier); + if (artifact != null) { + validatePackage(artifact.getFile()); + } else { + throw new IOException("Could not validate attached artifact with classifier " + classifier); + } + } else { + validatePackage(packageFile); + } validationHelper.failBuildInCaseOfViolations(failOnValidationWarnings); } catch (IOException | ParserConfigurationException | SAXException e) { throw new MojoExecutionException("Could not validate package '" + packageFile + "': " + e.getMessage(), e); @@ -127,7 +146,7 @@ public class ValidatePackageMojo extends AbstractValidateMojo { // strip off jcr_root Path relativeJcrPath = Paths.get(Constants.ROOT_DIR).relativize(entryPath); messages.addAll(executor.validateJcrRoot(inputStream, relativeJcrPath, packagePath.resolve(Constants.ROOT_DIR))); - + // in case this is a subpackage if (inputStream != null && entryPath.getFileName().toString().endsWith(VaultMojo.PACKAGE_EXT) && !skipSubPackageValidation) { Path subPackagePath = context.getPackageRootPath().resolve(entryPath); @@ -152,4 +171,16 @@ public class ValidatePackageMojo extends AbstractValidateMojo { validationHelper.printMessages(messages, getLog(), buildContext, packageFile.toPath()); } + private Artifact getArtifact(String classifier) { + if (classifier != null) { + for (Artifact attachedArtifact : this.project.getAttachedArtifacts()) { + if (classifier.equals(attachedArtifact.getClassifier()) && attachedArtifact.getFile() != null + && attachedArtifact.getFile().isFile()) { + return attachedArtifact; + } + } + } + return null; + } + } diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java index e73ccd6..41b725f 100644 --- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java +++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java @@ -179,6 +179,13 @@ public class VaultMojo extends AbstractSourceAndMetadataPackageMojo { @Parameter private MavenArchiveConfiguration archive; + /** + * Classifier to add to the generated package. If given, the artifact will be attached + * as a supplemental artifact. + */ + @Parameter + private String classifier; + /** */ @Component(role = MavenFileFilter.class, hint = "default") @@ -374,7 +381,7 @@ public class VaultMojo extends AbstractSourceAndMetadataPackageMojo { /** Executes this mojo */ @Override public void execute() throws MojoExecutionException, MojoFailureException { - final File finalFile = new File(outputDirectory, finalName + PACKAGE_EXT); + final File finalFile = getZipFile(outputDirectory, finalName, classifier); MavenResourcesExecution mavenResourcesExection = setupMavenResourcesExecution(); try { @@ -485,6 +492,21 @@ public class VaultMojo extends AbstractSourceAndMetadataPackageMojo { } } + private File getZipFile(File basedir, String resultFinalName, String classifier) { + if (basedir == null) { + throw new IllegalArgumentException("basedir is not allowed to be null"); + } + if (resultFinalName == null) { + throw new IllegalArgumentException("finalName is not allowed to be null"); + } + StringBuilder fileName = new StringBuilder(resultFinalName); + if (org.apache.commons.lang3.StringUtils.isNotEmpty(classifier)) { + fileName.append("-").append(classifier); + } + fileName.append("." + PACKAGE_TYPE); + return new File(basedir, fileName.toString()); + } + private Map addSourceDirectory(MavenResourcesExecution mavenResourcesExecution, ContentPackageArchiver contentPackageArchiver, File jcrSourceDirectory, Filters filters, Map embeddedFiles) throws MavenFilteringException { Map duplicateFiles = new HashMap<>(); -- 2.15.1 From b379fedba0601128fecb4a0ecbe3cabdc6b66069 Mon Sep 17 00:00:00 2001 From: Burkhard Pauli Date: Tue, 12 May 2020 17:08:13 +0200 Subject: [PATCH 2/6] JCRVLT-434 - Allow classifier option for filevault-maven-plugin - make sure classifier get attached as additional artifacts - validate all attached artifacts with zip file extension --- .../maven/packaging/ValidatePackageMojo.java | 40 ++++++---------------- .../filevault/maven/packaging/VaultMojo.java | 21 ++++++++---- 2 files changed, 25 insertions(+), 36 deletions(-) diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatePackageMojo.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatePackageMojo.java index b668ff8..df46eac 100644 --- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatePackageMojo.java +++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatePackageMojo.java @@ -24,7 +24,6 @@ import java.nio.file.Paths; import java.util.Collection; import java.util.LinkedList; import java.util.List; - import javax.xml.parsers.ParserConfigurationException; import org.apache.jackrabbit.filevault.maven.packaging.validator.impl.context.ArchiveValidationContextImpl; @@ -43,7 +42,6 @@ import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.plugins.annotations.ResolutionScope; -import org.codehaus.plexus.util.StringUtils; import org.jetbrains.annotations.Nullable; import org.xml.sax.SAXException; @@ -68,12 +66,8 @@ public class ValidatePackageMojo extends AbstractValidateMojo { @Parameter(required = true, defaultValue = "false") private boolean skipSubPackageValidation; - /** - * If given, the classifier will be used to get the package to be verified from the attached artifacts from the project with the same - * classifier. - */ - @Parameter - private String classifier; + @Parameter(readonly = false, defaultValue = "${project.attachedArtifacts}") + private List attachedArtifacts; public ValidatePackageMojo() { } @@ -81,16 +75,17 @@ public class ValidatePackageMojo extends AbstractValidateMojo { @Override public void doExecute() throws MojoExecutionException, MojoFailureException { try { - if (StringUtils.isNotEmpty(classifier)) { - Artifact artifact = getArtifact(classifier); - if (artifact != null) { - validatePackage(artifact.getFile()); - } else { - throw new IOException("Could not validate attached artifact with classifier " + classifier); - } - } else { + File packageFile = this.packageFile; + if (packageFile != null && !packageFile.isDirectory()) { validatePackage(packageFile); } + if (!attachedArtifacts.isEmpty()) { + for (Artifact attached : attachedArtifacts) { + if (attached.getFile().getName().endsWith(VaultMojo.PACKAGE_EXT)) { + validatePackage(attached.getFile()); + } + } + } validationHelper.failBuildInCaseOfViolations(failOnValidationWarnings); } catch (IOException | ParserConfigurationException | SAXException e) { throw new MojoExecutionException("Could not validate package '" + packageFile + "': " + e.getMessage(), e); @@ -170,17 +165,4 @@ public class ValidatePackageMojo extends AbstractValidateMojo { } validationHelper.printMessages(messages, getLog(), buildContext, packageFile.toPath()); } - - private Artifact getArtifact(String classifier) { - if (classifier != null) { - for (Artifact attachedArtifact : this.project.getAttachedArtifacts()) { - if (classifier.equals(attachedArtifact.getClassifier()) && attachedArtifact.getFile() != null - && attachedArtifact.getFile().isFile()) { - return attachedArtifact; - } - } - } - return null; - } - } diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java index 41b725f..a77b8ce 100644 --- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java +++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java @@ -53,6 +53,7 @@ import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.plugins.annotations.ResolutionScope; +import org.apache.maven.project.MavenProjectHelper; import org.apache.maven.shared.filtering.MavenFileFilter; import org.apache.maven.shared.filtering.MavenFilteringException; import org.apache.maven.shared.filtering.MavenResourcesExecution; @@ -196,6 +197,9 @@ public class VaultMojo extends AbstractSourceAndMetadataPackageMojo { @Component(role = MavenResourcesFiltering.class, hint = "default") MavenResourcesFiltering mavenResourcesFiltering; + @Component + private MavenProjectHelper projectHelper; + /** All file names (relative to the zip root) which are supposed to not get overwritten in the package. The value is the source file. */ private Map protectedFiles = new HashMap<>(); @@ -480,13 +484,16 @@ public class VaultMojo extends AbstractSourceAndMetadataPackageMojo { mavenArchiver.configureReproducible(outputTimestamp); mavenArchiver.createArchive(null, project, getMavenArchiveConfiguration(getGeneratedManifestFile())); - // set the file for the project's artifact and ensure the - // artifact is correctly handled with the "zip" handler - // (workaround for MNG-1682) - final Artifact projectArtifact = project.getArtifact(); - projectArtifact.setFile(finalFile); - projectArtifact.setArtifactHandler(artifactHandlerManager.getArtifactHandler(PACKAGE_TYPE)); - + if (StringUtils.isNotEmpty(classifier)) { + projectHelper.attachArtifact(project, finalFile, classifier); + } else { + // set the file for the project's artifact and ensure the + // artifact is correctly handled with the "zip" handler + // (workaround for MNG-1682) + final Artifact projectArtifact = project.getArtifact(); + projectArtifact.setFile(finalFile); + projectArtifact.setArtifactHandler(artifactHandlerManager.getArtifactHandler(PACKAGE_TYPE)); + } } catch (IllegalStateException | ManifestException | IOException | DependencyResolutionRequiredException | ConfigurationException | MavenFilteringException e) { throw new MojoExecutionException(e.toString(), e); } -- 2.15.1 From cc43793b8875dea577797c94219b8e6258625e9e Mon Sep 17 00:00:00 2001 From: Burkhard Pauli Date: Wed, 6 May 2020 13:44:26 +0200 Subject: [PATCH 3/6] JCRVLT-434 - Allow classifier option for filevault-maven-plugin - add new parameter classifier in Vault and ValdiatePackage Mojo --- .../maven/packaging/ValidatePackageMojo.java | 39 +++++++++++++++++++--- .../filevault/maven/packaging/VaultMojo.java | 24 ++++++++++++- 2 files changed, 58 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatePackageMojo.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatePackageMojo.java index ecbbfc4..b668ff8 100644 --- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatePackageMojo.java +++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatePackageMojo.java @@ -23,6 +23,7 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.util.Collection; import java.util.LinkedList; +import java.util.List; import javax.xml.parsers.ParserConfigurationException; @@ -35,17 +36,19 @@ import org.apache.jackrabbit.vault.util.Constants; import org.apache.jackrabbit.vault.validation.ValidationExecutor; import org.apache.jackrabbit.vault.validation.ValidationViolation; import org.apache.jackrabbit.vault.validation.spi.ValidationMessageSeverity; +import org.apache.maven.artifact.Artifact; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.plugins.annotations.ResolutionScope; +import org.codehaus.plexus.util.StringUtils; import org.jetbrains.annotations.Nullable; import org.xml.sax.SAXException; -/** +/** * Validates the whole package with all registered validators. * @see Validators */ @@ -64,14 +67,30 @@ public class ValidatePackageMojo extends AbstractValidateMojo { /** If set to {@code true} will not validate any sub packages. This settings overwrites the parameter {@code enforceRecursiveSubpackageValidation}. */ @Parameter(required = true, defaultValue = "false") private boolean skipSubPackageValidation; - + + /** + * If given, the classifier will be used to get the package to be verified from the attached artifacts from the project with the same + * classifier. + */ + @Parameter + private String classifier; + public ValidatePackageMojo() { } @Override public void doExecute() throws MojoExecutionException, MojoFailureException { try { - validatePackage(packageFile); + if (StringUtils.isNotEmpty(classifier)) { + Artifact artifact = getArtifact(classifier); + if (artifact != null) { + validatePackage(artifact.getFile()); + } else { + throw new IOException("Could not validate attached artifact with classifier " + classifier); + } + } else { + validatePackage(packageFile); + } validationHelper.failBuildInCaseOfViolations(failOnValidationWarnings); } catch (IOException | ParserConfigurationException | SAXException e) { throw new MojoExecutionException("Could not validate package '" + packageFile + "': " + e.getMessage(), e); @@ -127,7 +146,7 @@ public class ValidatePackageMojo extends AbstractValidateMojo { // strip off jcr_root Path relativeJcrPath = Paths.get(Constants.ROOT_DIR).relativize(entryPath); messages.addAll(executor.validateJcrRoot(inputStream, relativeJcrPath, packagePath.resolve(Constants.ROOT_DIR))); - + // in case this is a subpackage if (inputStream != null && entryPath.getFileName().toString().endsWith(VaultMojo.PACKAGE_EXT) && !skipSubPackageValidation) { Path subPackagePath = context.getPackageRootPath().resolve(entryPath); @@ -152,4 +171,16 @@ public class ValidatePackageMojo extends AbstractValidateMojo { validationHelper.printMessages(messages, getLog(), buildContext, packageFile.toPath()); } + private Artifact getArtifact(String classifier) { + if (classifier != null) { + for (Artifact attachedArtifact : this.project.getAttachedArtifacts()) { + if (classifier.equals(attachedArtifact.getClassifier()) && attachedArtifact.getFile() != null + && attachedArtifact.getFile().isFile()) { + return attachedArtifact; + } + } + } + return null; + } + } diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java index 53d15ef..c97a511 100644 --- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java +++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java @@ -180,6 +180,13 @@ public class VaultMojo extends AbstractSourceAndMetadataPackageMojo { @Parameter private MavenArchiveConfiguration archive; + /** + * Classifier to add to the generated package. If given, the artifact will be attached + * as a supplemental artifact. + */ + @Parameter + private String classifier; + /** */ @Component(role = MavenFileFilter.class, hint = "default") @@ -375,7 +382,7 @@ public class VaultMojo extends AbstractSourceAndMetadataPackageMojo { /** Executes this mojo */ @Override public void execute() throws MojoExecutionException, MojoFailureException { - final File finalFile = new File(outputDirectory, finalName + PACKAGE_EXT); + final File finalFile = getZipFile(outputDirectory, finalName, classifier); MavenResourcesExecution mavenResourcesExection = setupMavenResourcesExecution(); try { @@ -490,6 +497,21 @@ public class VaultMojo extends AbstractSourceAndMetadataPackageMojo { } } + private File getZipFile(File basedir, String resultFinalName, String classifier) { + if (basedir == null) { + throw new IllegalArgumentException("basedir is not allowed to be null"); + } + if (resultFinalName == null) { + throw new IllegalArgumentException("finalName is not allowed to be null"); + } + StringBuilder fileName = new StringBuilder(resultFinalName); + if (org.apache.commons.lang3.StringUtils.isNotEmpty(classifier)) { + fileName.append("-").append(classifier); + } + fileName.append("." + PACKAGE_TYPE); + return new File(basedir, fileName.toString()); + } + private Map addSourceDirectory(MavenResourcesExecution mavenResourcesExecution, ContentPackageArchiver contentPackageArchiver, File jcrSourceDirectory, Filters filters, Map embeddedFiles) throws MavenFilteringException { Map duplicateFiles = new HashMap<>(); -- 2.15.1 From 8f594a3b158985fa19a37a1ffef6f841aeacfb71 Mon Sep 17 00:00:00 2001 From: Burkhard Pauli Date: Tue, 12 May 2020 17:08:13 +0200 Subject: [PATCH 4/6] JCRVLT-434 - Allow classifier option for filevault-maven-plugin - make sure classifier get attached as additional artifacts - validate all attached artifacts with zip file extension --- .../maven/packaging/ValidatePackageMojo.java | 40 ++++++---------------- .../filevault/maven/packaging/VaultMojo.java | 21 ++++++++---- 2 files changed, 25 insertions(+), 36 deletions(-) diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatePackageMojo.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatePackageMojo.java index b668ff8..df46eac 100644 --- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatePackageMojo.java +++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatePackageMojo.java @@ -24,7 +24,6 @@ import java.nio.file.Paths; import java.util.Collection; import java.util.LinkedList; import java.util.List; - import javax.xml.parsers.ParserConfigurationException; import org.apache.jackrabbit.filevault.maven.packaging.validator.impl.context.ArchiveValidationContextImpl; @@ -43,7 +42,6 @@ import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.plugins.annotations.ResolutionScope; -import org.codehaus.plexus.util.StringUtils; import org.jetbrains.annotations.Nullable; import org.xml.sax.SAXException; @@ -68,12 +66,8 @@ public class ValidatePackageMojo extends AbstractValidateMojo { @Parameter(required = true, defaultValue = "false") private boolean skipSubPackageValidation; - /** - * If given, the classifier will be used to get the package to be verified from the attached artifacts from the project with the same - * classifier. - */ - @Parameter - private String classifier; + @Parameter(readonly = false, defaultValue = "${project.attachedArtifacts}") + private List attachedArtifacts; public ValidatePackageMojo() { } @@ -81,16 +75,17 @@ public class ValidatePackageMojo extends AbstractValidateMojo { @Override public void doExecute() throws MojoExecutionException, MojoFailureException { try { - if (StringUtils.isNotEmpty(classifier)) { - Artifact artifact = getArtifact(classifier); - if (artifact != null) { - validatePackage(artifact.getFile()); - } else { - throw new IOException("Could not validate attached artifact with classifier " + classifier); - } - } else { + File packageFile = this.packageFile; + if (packageFile != null && !packageFile.isDirectory()) { validatePackage(packageFile); } + if (!attachedArtifacts.isEmpty()) { + for (Artifact attached : attachedArtifacts) { + if (attached.getFile().getName().endsWith(VaultMojo.PACKAGE_EXT)) { + validatePackage(attached.getFile()); + } + } + } validationHelper.failBuildInCaseOfViolations(failOnValidationWarnings); } catch (IOException | ParserConfigurationException | SAXException e) { throw new MojoExecutionException("Could not validate package '" + packageFile + "': " + e.getMessage(), e); @@ -170,17 +165,4 @@ public class ValidatePackageMojo extends AbstractValidateMojo { } validationHelper.printMessages(messages, getLog(), buildContext, packageFile.toPath()); } - - private Artifact getArtifact(String classifier) { - if (classifier != null) { - for (Artifact attachedArtifact : this.project.getAttachedArtifacts()) { - if (classifier.equals(attachedArtifact.getClassifier()) && attachedArtifact.getFile() != null - && attachedArtifact.getFile().isFile()) { - return attachedArtifact; - } - } - } - return null; - } - } diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java index c97a511..25daa51 100644 --- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java +++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java @@ -54,6 +54,7 @@ import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.plugins.annotations.ResolutionScope; +import org.apache.maven.project.MavenProjectHelper; import org.apache.maven.shared.filtering.MavenFileFilter; import org.apache.maven.shared.filtering.MavenFilteringException; import org.apache.maven.shared.filtering.MavenResourcesExecution; @@ -197,6 +198,9 @@ public class VaultMojo extends AbstractSourceAndMetadataPackageMojo { @Component(role = MavenResourcesFiltering.class, hint = "default") MavenResourcesFiltering mavenResourcesFiltering; + @Component + private MavenProjectHelper projectHelper; + /** All file names (relative to the zip root) which are supposed to not get overwritten in the package. The value is the source file. */ private Map protectedFiles = new HashMap<>(); @@ -485,13 +489,16 @@ public class VaultMojo extends AbstractSourceAndMetadataPackageMojo { mavenArchiver.configureReproducible(outputTimestamp); mavenArchiver.createArchive(null, project, getMavenArchiveConfiguration(getGeneratedManifestFile())); - // set the file for the project's artifact and ensure the - // artifact is correctly handled with the "zip" handler - // (workaround for MNG-1682) - final Artifact projectArtifact = project.getArtifact(); - projectArtifact.setFile(finalFile); - projectArtifact.setArtifactHandler(artifactHandlerManager.getArtifactHandler(PACKAGE_TYPE)); - + if (StringUtils.isNotEmpty(classifier)) { + projectHelper.attachArtifact(project, finalFile, classifier); + } else { + // set the file for the project's artifact and ensure the + // artifact is correctly handled with the "zip" handler + // (workaround for MNG-1682) + final Artifact projectArtifact = project.getArtifact(); + projectArtifact.setFile(finalFile); + projectArtifact.setArtifactHandler(artifactHandlerManager.getArtifactHandler(PACKAGE_TYPE)); + } } catch (IllegalStateException | ManifestException | IOException | DependencyResolutionRequiredException | ConfigurationException | MavenFilteringException e) { throw new MojoExecutionException(e.toString(), e); } -- 2.15.1 From c5de0c9c0de13c8fe30ba16192ecbfb3d487f843 Mon Sep 17 00:00:00 2001 From: Burkhard Pauli Date: Tue, 12 May 2020 17:36:13 +0200 Subject: [PATCH 5/6] JCRVLT-434 - Allow classifier option for filevault-maven-plugin - make parameter attachedArtifacts readonly - log warning if no packages are found to validate - minior Javadoc change --- .../filevault/maven/packaging/ValidatePackageMojo.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatePackageMojo.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatePackageMojo.java index df46eac..a83617b 100644 --- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatePackageMojo.java +++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatePackageMojo.java @@ -47,7 +47,7 @@ import org.xml.sax.SAXException; /** - * Validates the whole package with all registered validators. + * Validates all attached packages with all registered validators. * @see Validators */ @Mojo( @@ -66,7 +66,7 @@ public class ValidatePackageMojo extends AbstractValidateMojo { @Parameter(required = true, defaultValue = "false") private boolean skipSubPackageValidation; - @Parameter(readonly = false, defaultValue = "${project.attachedArtifacts}") + @Parameter(readonly = true, defaultValue = "${project.attachedArtifacts}") private List attachedArtifacts; public ValidatePackageMojo() { @@ -78,13 +78,14 @@ public class ValidatePackageMojo extends AbstractValidateMojo { File packageFile = this.packageFile; if (packageFile != null && !packageFile.isDirectory()) { validatePackage(packageFile); - } - if (!attachedArtifacts.isEmpty()) { + } else if (!attachedArtifacts.isEmpty()) { for (Artifact attached : attachedArtifacts) { if (attached.getFile().getName().endsWith(VaultMojo.PACKAGE_EXT)) { validatePackage(attached.getFile()); } } + } else { + getLog().warn("No packages found to validate."); } validationHelper.failBuildInCaseOfViolations(failOnValidationWarnings); } catch (IOException | ParserConfigurationException | SAXException e) { -- 2.15.1 From a886252402f1b6b141b3a3c22027c631a00242b4 Mon Sep 17 00:00:00 2001 From: Burkhard Pauli Date: Tue, 12 May 2020 17:46:20 +0200 Subject: [PATCH 6/6] JCRVLT-434 - Allow classifier option for filevault-maven-plugin - clarify classifier parameter to the finalName parameter --- .../jackrabbit/filevault/maven/packaging/ValidatePackageMojo.java | 1 + .../org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatePackageMojo.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatePackageMojo.java index a83617b..acc531d 100644 --- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatePackageMojo.java +++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatePackageMojo.java @@ -166,4 +166,5 @@ public class ValidatePackageMojo extends AbstractValidateMojo { } validationHelper.printMessages(messages, getLog(), buildContext, packageFile.toPath()); } + } diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java index 25daa51..1792633 100644 --- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java +++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java @@ -91,7 +91,8 @@ public class VaultMojo extends AbstractSourceAndMetadataPackageMojo { @Parameter(property = "vault.failOnDuplicateEntries", required = true, defaultValue = "true") private boolean failOnDuplicateEntries; - /** The name of the generated package ZIP file without the ".zip" file extension. */ + /** The name of the generated package ZIP file without the ".zip" file extension. The optional classifier parameter will be appended + * to the name of the package. */ @Parameter(property = "vault.finalName", defaultValue = "${project.build.finalName}", required = true) private String finalName; -- 2.15.1