You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by kw...@apache.org on 2021/08/31 17:10:50 UTC
[jackrabbit-filevault-package-maven-plugin] branch
bugfix/validate-classifier updated: JCRVLT-553 correctly validate in case
there is no main artifact
This is an automated email from the ASF dual-hosted git repository.
kwin pushed a commit to branch bugfix/validate-classifier
in repository https://gitbox.apache.org/repos/asf/jackrabbit-filevault-package-maven-plugin.git
The following commit(s) were added to refs/heads/bugfix/validate-classifier by this push:
new 152f636 JCRVLT-553 correctly validate in case there is no main artifact
152f636 is described below
commit 152f63622379c6127f72ecac55429173606bfbda
Author: Konrad Windszus <kw...@apache.org>
AuthorDate: Tue Aug 31 19:10:44 2021 +0200
JCRVLT-553 correctly validate in case there is no main artifact
also evaluate parameter "classifier" in mojos validate-files and
validate-packages
---
.../packaging/AbstractMetadataPackageMojo.java | 17 ++++--
.../maven/packaging/ValidateFilesMojo.java | 9 +++-
.../maven/packaging/ValidatePackageMojo.java | 61 +++++++++++++---------
.../filevault/maven/packaging/VaultMojo.java | 2 +-
.../it/GenerateMetadataMultiModuleIT.java | 3 +-
.../maven/packaging/it/ProjectBuilder.java | 18 +++++--
.../maven/packaging/it/ValidatePackageIT.java | 10 ++--
7 files changed, 79 insertions(+), 41 deletions(-)
diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractMetadataPackageMojo.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractMetadataPackageMojo.java
index 4708063..5cb90b1 100644
--- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractMetadataPackageMojo.java
+++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractMetadataPackageMojo.java
@@ -181,19 +181,28 @@ public abstract class AbstractMetadataPackageMojo extends AbstractMojo {
}
}
+ /**
+ *
+ * @param isForWriting
+ * @return the (potentially classifier-specific) work directory
+ */
File getWorkDirectory(boolean isForWriting) {
+ return getWorkDirectory(getLog(), isForWriting, workDirectory, classifier);
+ }
+
+ static File getWorkDirectory(Log log, boolean isForWriting, File defaultWorkDirectory, String classifier) {
if (StringUtils.isNotBlank(classifier)) {
- File classifierWorkDirectory = new File(workDirectory.toString() + "-" + classifier);
+ File classifierWorkDirectory = new File(defaultWorkDirectory.toString() + "-" + classifier);
if (!isForWriting) {
// fall back to regular work directory if work dir for classifier does not exist
if (!classifierWorkDirectory.exists()) {
- getLog().warn("Using regular workDirectory " + workDirectory + " as classifier specific workDirectory does not exist at " + classifierWorkDirectory);
- return workDirectory;
+ log.warn("Using regular workDirectory " + defaultWorkDirectory + " as classifier specific workDirectory does not exist at " + classifierWorkDirectory);
+ return defaultWorkDirectory;
}
}
return classifierWorkDirectory;
} else {
- return workDirectory;
+ return defaultWorkDirectory;
}
}
diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidateFilesMojo.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidateFilesMojo.java
index 3b7db40..75891a2 100644
--- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidateFilesMojo.java
+++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidateFilesMojo.java
@@ -98,6 +98,13 @@ public class ValidateFilesMojo extends AbstractValidateMojo {
defaultValue = "${project.build.directory}/vault-work",
required = true)
File workDirectory;
+
+ /**
+ * If given validates files built for the given classifier. This modifies the {@link #workDirectory} and appends the suffix {@code -<classifier>} to it.
+ */
+ @Parameter(property = "vault.classifier")
+ protected String classifier = "";
+
//-----
// End: Copied from AbstractMetadataPackageMojo
// -----
@@ -182,7 +189,7 @@ public class ValidateFilesMojo extends AbstractValidateMojo {
if (metaInfoVaultSourceDirectory != null) {
metaInfRootDirectory = metaInfoVaultSourceDirectory.getParentFile();
}
- File generatedMetaInfRootDirectory = new File(workDirectory, Constants.META_INF);
+ File generatedMetaInfRootDirectory = new File(AbstractMetadataPackageMojo.getWorkDirectory(getLog(), false, workDirectory, classifier), Constants.META_INF);
getLog().info("Validate files in generatedMetaInfRootDirectory " + getProjectRelativeFilePath(generatedMetaInfRootDirectory.toPath()) + " and metaInfRootDir " + getProjectRelativeFilePath(generatedMetaInfRootDirectory.toPath()));
ValidationContext context = new DirectoryValidationContext(buildContext.isIncremental(), generatedMetaInfRootDirectory, metaInfRootDirectory, resolver, getLog());
ValidationExecutor executor = validationExecutorFactory.createValidationExecutor(context, false, false, getValidatorSettingsForPackage(context.getProperties().getId(), false));
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 1fcd99a..93b73ae 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
@@ -44,6 +44,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.codehaus.plexus.util.StringUtils;
import org.jetbrains.annotations.Nullable;
import org.xml.sax.SAXException;
@@ -57,7 +58,7 @@ public class ValidatePackageMojo extends AbstractValidateMojo {
/** The main package file to validate. By default will be the project's main artifact (in case a project is given). If empty the main artifact will not be validated
* but only the attached artifacts with the given {@link #classifiers}. */
- @Parameter(property = "vault.packageToValidate", defaultValue = "${project.artifact.file}", required=true)
+ @Parameter(property = "vault.packageToValidate", defaultValue = "${project.artifact.file}")
private File packageFile;
/** If set to {@code true} always executes all validators also for all sub packages (recursively). */
@@ -72,41 +73,51 @@ public class ValidatePackageMojo extends AbstractValidateMojo {
private List<Artifact> attachedArtifacts;
/**
- * If given validates all attached artifacts with one of the given classifiers in addition to the one given in {@link #packageFile}.
+ * If given validates all attached artifacts with one of the given classifiers (potentially in addition to the one given in {@link #packageFile}).
+ * This list is merged with the classifier given in parameter {@link #classifier}.
*/
@Parameter()
private List<String> classifiers;
+ /**
+ * The given classifier is merged with the ones given in parameter {@link #classifiers) and all matching attached artifacts are validated (potentially in addition to the one given in {@link #packageFile}).
+ */
+ @Parameter(property = "vault.classifier")
+ protected String classifier = "";
+
public ValidatePackageMojo() {
}
@Override
public void doExecute(ValidationHelper validationHelper) throws MojoExecutionException, MojoFailureException {
- try {
- boolean foundPackage = false;
- if (packageFile != null && !packageFile.toString().isEmpty() && !packageFile.isDirectory()) {
- validatePackage(validationHelper, packageFile.toPath());
- foundPackage = true;
- }
- if (!attachedArtifacts.isEmpty()) {
- for (Artifact attached : attachedArtifacts) {
- // validate attached artifacts with given classifiers
- if (classifiers.contains(attached.getClassifier())) {
- validatePackage(validationHelper, attached.getFile().toPath());
- foundPackage = true;
- }
+ boolean foundPackage = false;
+ if (packageFile != null && !packageFile.toString().isEmpty() && !packageFile.isDirectory()) {
+ validatePackage(validationHelper, packageFile.toPath());
+ foundPackage = true;
+ }
+ if (!attachedArtifacts.isEmpty()) {
+ List<String> classifiersToCompare = new ArrayList<>();
+ if (classifiers != null) {
+ classifiersToCompare.addAll(classifiers);
+ }
+ if (StringUtils.isNotBlank(classifier)) {
+ classifiersToCompare.add(classifier);
+ }
+ for (Artifact attached : attachedArtifacts) {
+ // validate attached artifacts with given classifiers
+ if (classifiersToCompare.contains(attached.getClassifier())) {
+ validatePackage(validationHelper, attached.getFile().toPath());
+ foundPackage = true;
}
- }
- if (!foundPackage) {
- getLog().warn("No packages found to validate.");
}
- validationHelper.failBuildInCaseOfViolations(failOnValidationWarnings);
- } catch (IOException | ParserConfigurationException | SAXException e) {
- throw new MojoExecutionException("Could not validate package '" + packageFile + "': " + e.getMessage(), e);
+ }
+ if (!foundPackage) {
+ getLog().warn("No packages found to validate.");
}
+ validationHelper.failBuildInCaseOfViolations(failOnValidationWarnings);
}
- private void validatePackage(ValidationHelper validationHelper, Path file) throws IOException, ParserConfigurationException, SAXException, MojoExecutionException {
+ private void validatePackage(ValidationHelper validationHelper, Path file) throws MojoExecutionException {
getLog().info("Start validating package " + getProjectRelativeFilePath(file) + "...");
// open file to extract the meta data for the validation context
@@ -123,13 +134,15 @@ public class ValidatePackageMojo extends AbstractValidateMojo {
throw new MojoExecutionException("No registered validators found!");
}
getLog().debug("End validating package " + getProjectRelativeFilePath(file) + ".");
+ } catch (IOException | ParserConfigurationException | SAXException e) {
+ throw new MojoExecutionException("Could not validate package '" + file + "': " + e.getMessage(), e);
}
}
private void validateArchive(ValidationHelper validationHelper, Archive archive, Path path, ArchiveValidationContextImpl context,
ValidationExecutor executor) throws IOException, SAXException, ParserConfigurationException {
validateEntry(validationHelper, archive, archive.getRoot(), Paths.get(""), path, context, executor);
- validationHelper.printMessages(executor.done(), getLog(), buildContext, packageFile.toPath());
+ validationHelper.printMessages(executor.done(), getLog(), buildContext, path);
}
private void validateEntry(ValidationHelper validationHelper, Archive archive, Archive.Entry entry, Path entryPath, Path packagePath, ArchiveValidationContextImpl context,
@@ -187,7 +200,7 @@ public class ValidatePackageMojo extends AbstractValidateMojo {
} else {
messages.add(new ValidationViolation(ValidationMessageSeverity.WARN, "Found unexpected file outside of " + Constants.ROOT_DIR + " and " + Constants.META_INF, entryPath, packagePath, null, 0,0, null));
}
- validationHelper.printMessages(messages, getLog(), buildContext, packageFile.toPath());
+ validationHelper.printMessages(messages, getLog(), buildContext, packagePath);
}
}
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 f0189b1..5dc5f77 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
@@ -73,7 +73,7 @@ public class VaultMojo extends AbstractSourceAndMetadataPackageMojo {
private static final String PACKAGE_TYPE = "zip";
- static final String PACKAGE_EXT = "." + PACKAGE_TYPE;
+ public static final String PACKAGE_EXT = "." + PACKAGE_TYPE;
private static final Collection<File> STATIC_META_INF_FILES = Arrays.asList(new File(Constants.META_DIR, Constants.CONFIG_XML),
new File(Constants.META_DIR, Constants.SETTINGS_XML));
diff --git a/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/GenerateMetadataMultiModuleIT.java b/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/GenerateMetadataMultiModuleIT.java
index 5bec415..65d78de 100644
--- a/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/GenerateMetadataMultiModuleIT.java
+++ b/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/GenerateMetadataMultiModuleIT.java
@@ -18,6 +18,7 @@ package org.apache.jackrabbit.filevault.maven.packaging.it;
import java.nio.file.Paths;
+import org.apache.jackrabbit.filevault.maven.packaging.VaultMojo;
import org.junit.Test;
public class GenerateMetadataMultiModuleIT {
@@ -47,7 +48,7 @@ public class GenerateMetadataMultiModuleIT {
public void multi_module_build_clean_package() throws Exception {
new ProjectBuilder()
.setTestProjectDir("/generate-metadata-multimodule")
- .setTestPackageFile("container/" + ProjectBuilder.TEST_PACKAGE_DEFAULT_NAME)
+ .setTestPackageFile("container/" + ProjectBuilder.TEST_PACKAGE_DEFAULT_NAME + VaultMojo.PACKAGE_EXT)
.setTestGoals("clean", "package")
.setVerifyPackageContents(false)
.build()
diff --git a/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ProjectBuilder.java b/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ProjectBuilder.java
index ca10153..608f73c 100644
--- a/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ProjectBuilder.java
+++ b/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ProjectBuilder.java
@@ -49,6 +49,7 @@ import java.util.zip.ZipFile;
import org.apache.commons.io.IOUtils;
import org.apache.commons.io.input.BoundedReader;
+import org.apache.jackrabbit.filevault.maven.packaging.VaultMojo;
import org.apache.maven.it.VerificationException;
import org.apache.maven.it.Verifier;
import org.apache.maven.model.Model;
@@ -79,7 +80,7 @@ public class ProjectBuilder {
public static final String TEST_PROJECTS_ROOT = "target/test-classes/test-projects";
- static final String TEST_PACKAGE_DEFAULT_NAME = "target/package-plugin-test-pkg-1.0.0-SNAPSHOT.zip";
+ static final String TEST_PACKAGE_DEFAULT_NAME = "target/package-plugin-test-pkg-1.0.0-SNAPSHOT";
static final Pattern PLACEHOLDER_PATTERN = Pattern.compile("%(\\d*)%");
@@ -158,9 +159,9 @@ public class ProjectBuilder {
return this;
}
- public ProjectBuilder setTestProjectDir(File testProjectDir) {
+ public ProjectBuilder setTestProjectDir(File testProjectDir, String classifier) {
this.testProjectDir = testProjectDir;
- this.testPackageFile = new File(testProjectDir, TEST_PACKAGE_DEFAULT_NAME);
+ this.testPackageFile = new File(testProjectDir, TEST_PACKAGE_DEFAULT_NAME + (StringUtils.isNotBlank(classifier)?"-"+classifier:"") + VaultMojo.PACKAGE_EXT);
// if we ever need different files, just create the setters.
this.expectedFilesFile = new File(testProjectDir, "expected-files.txt");
@@ -174,11 +175,18 @@ public class ProjectBuilder {
return this;
}
+ public ProjectBuilder setTestProjectDir(File testProjectDir) {
+ return setTestProjectDir(testProjectDir, null);
+ }
+
+ public ProjectBuilder setTestProjectDir(String relPath, String classifier) {
+ return setTestProjectDir(new File(testProjectsRoot, relPath), classifier);
+ }
+
public ProjectBuilder setTestProjectDir(String relPath) {
- return setTestProjectDir(new File(testProjectsRoot, relPath));
+ return setTestProjectDir(relPath, null);
}
-
public File getTestProjectDir() {
return testProjectDir;
}
diff --git a/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ValidatePackageIT.java b/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ValidatePackageIT.java
index 2733e58..0bb753f 100644
--- a/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ValidatePackageIT.java
+++ b/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ValidatePackageIT.java
@@ -33,16 +33,16 @@ public class ValidatePackageIT {
private static final String TEST_PROJECT_NAME = "/validator-projects/";
- private ProjectBuilder verify(String projectName, boolean expectToFail) throws VerificationException, IOException {
+ private ProjectBuilder verify(String projectName, boolean expectToFail, String classifier) throws VerificationException, IOException {
return new ProjectBuilder()
- .setTestProjectDir(TEST_PROJECT_NAME + projectName)
+ .setTestProjectDir(TEST_PROJECT_NAME + projectName, classifier)
.setBuildExpectedToFail(expectToFail)
.build();
}
@Test
public void testInvalidProject() throws Exception {
- ProjectBuilder projectBuilder = verify("invalid-project", true);
+ ProjectBuilder projectBuilder = verify("invalid-project", true, null);
projectBuilder.verifyExpectedLogLines(Paths.get("META-INF", "vault", "filter.xml").toString());
File csvReportFile = new File(projectBuilder.getTestProjectDir(), "report.csv");
Assert.assertTrue(csvReportFile.exists());
@@ -53,11 +53,11 @@ public class ValidatePackageIT {
@Test
public void testValidProjectWithZip() throws Exception {
- verify("project-with-zip", false);
+ verify("project-with-zip", false, null);
}
@Test
public void testValidProjectWithClassifier() throws Exception {
- verify("classifier-project", false);
+ verify("classifier-project", false, "test");
}
}