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/06/11 06:41:17 UTC
[jackrabbit-filevault-package-maven-plugin] branch master updated:
JCRVLT-528 order files correctly for validation (#55)
This is an automated email from the ASF dual-hosted git repository.
kwin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jackrabbit-filevault-package-maven-plugin.git
The following commit(s) were added to refs/heads/master by this push:
new 3200b28 JCRVLT-528 order files correctly for validation (#55)
3200b28 is described below
commit 3200b28cbb5c96fb13103323ff29749b6cf33324
Author: Konrad Windszus <kw...@apache.org>
AuthorDate: Fri Jun 11 08:41:10 2021 +0200
JCRVLT-528 order files correctly for validation (#55)
* JCRVLT-528 order files correctly for validation
(parent folder and .content.xml must come first)
Switch to NIO Files in some more places
correctly indicate incremental validation runs
---
pom.xml | 2 +-
.../maven/packaging/AbstractValidateMojo.java | 13 +-
.../maven/packaging/ValidateFilesMojo.java | 145 ++++++++++++++++-----
.../maven/packaging/ValidatePackageMojo.java | 14 +-
.../impl/context/DirectoryValidationContext.java | 8 +-
.../maven/packaging/ValidateFilesMojoTest.java | 53 ++++++++
.../maven/packaging/it/ValidateFilesIT.java | 2 +-
7 files changed, 193 insertions(+), 44 deletions(-)
diff --git a/pom.xml b/pom.xml
index 37c9834..1ca6023 100644
--- a/pom.xml
+++ b/pom.xml
@@ -24,7 +24,7 @@
<groupId>org.apache.jackrabbit.vault</groupId>
<artifactId>parent</artifactId>
<relativePath />
- <version>3.5.0</version>
+ <version>3.5.1-SNAPSHOT</version>
</parent>
<!-- ====================================================================== -->
diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractValidateMojo.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractValidateMojo.java
index a6cb1bd..8c6376d 100644
--- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractValidateMojo.java
+++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractValidateMojo.java
@@ -19,6 +19,7 @@ package org.apache.jackrabbit.filevault.maven.packaging;
import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
+import java.nio.file.Path;
import java.util.Collection;
import java.util.Comparator;
import java.util.HashMap;
@@ -182,8 +183,8 @@ public abstract class AbstractValidateMojo extends AbstractMojo {
*/
public static final Artifact IGNORE_ARTIFACT = new DefaultArtifact("ignore", "ignore", "1.0", "", "", "", null);
- protected String getProjectRelativeFilePath(File file) {
- return "'" + project.getBasedir().toPath().relativize(file.toPath()).toString() + "'";
+ protected String getProjectRelativeFilePath(Path file) {
+ return "'" + project.getBasedir().toPath().relativize(file).toString() + "'";
}
public AbstractValidateMojo() {
@@ -378,17 +379,19 @@ public abstract class AbstractValidateMojo extends AbstractMojo {
}
/**
- * Comparator on file names which makes sure that the {@code .content.xml} files come first.
+ * Comparator on file names (excluding paths) which makes sure that the files named {@code .content.xml} come first. Other file names are ordered lexicographically.
*/
static final class DotContentXmlFirstComparator implements Comparator<String> {
@Override
public int compare(String s1, String s2) {
- if (Constants.DOT_CONTENT_XML.equals(s1)) {
+ if (Constants.DOT_CONTENT_XML.equals(s1) && Constants.DOT_CONTENT_XML.equals(s2)) {
+ return 0;
+ } else if (Constants.DOT_CONTENT_XML.equals(s1)) {
return -1;
} else if (Constants.DOT_CONTENT_XML.equals(s2)) {
return 1;
}
- return 0;
+ return s1.compareTo(s2);
}
}
}
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 3b12903..f5d4e53 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
@@ -17,15 +17,22 @@
package org.apache.jackrabbit.filevault.maven.packaging;
import java.io.File;
-import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.nio.file.Paths;
-import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.Iterator;
import java.util.List;
+import java.util.NavigableSet;
+import java.util.Set;
+import java.util.SortedSet;
+import java.util.TreeSet;
import org.apache.commons.lang3.StringUtils;
import org.apache.jackrabbit.filevault.maven.packaging.validator.impl.context.DirectoryValidationContext;
@@ -177,20 +184,20 @@ public class ValidateFilesMojo extends AbstractValidateMojo {
metaInfRootDirectory = metaInfoVaultSourceDirectory.getParentFile();
}
File generatedMetaInfRootDirectory = new File(workDirectory, Constants.META_INF);
- getLog().info("Validate files in generatedMetaInfRootDirectory " + getProjectRelativeFilePath(generatedMetaInfRootDirectory) + " and metaInfRootDir " + getProjectRelativeFilePath(generatedMetaInfRootDirectory));
- ValidationContext context = new DirectoryValidationContext(generatedMetaInfRootDirectory, metaInfRootDirectory, resolver, getLog());
+ 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));
if (executor == null) {
throw new MojoExecutionException("No registered validators found!");
}
validationHelper.printUsedValidators(getLog(), executor, context, true);
if (metaInfRootDirectory != null) {
- validateDirectory(validationHelper, executor, metaInfRootDirectory, true);
+ validateDirectoryRecursively(validationHelper, executor, metaInfRootDirectory.toPath(), true);
}
- validateDirectory(validationHelper, executor, generatedMetaInfRootDirectory, true);
+ validateDirectoryRecursively(validationHelper, executor, generatedMetaInfRootDirectory.toPath(), true);
File jcrSourceDirectory = AbstractSourceAndMetadataPackageMojo.getJcrSourceDirectory(jcrRootSourceDirectory, builtContentDirectory, getLog());
if (jcrSourceDirectory != null) {
- validateDirectory(validationHelper, executor, jcrSourceDirectory, false);
+ validateDirectoryRecursively(validationHelper, executor, jcrSourceDirectory.toPath(), false);
}
validationHelper.printMessages(executor.done(), getLog(), buildContext, project.getBasedir().toPath());
} catch (IOException | ConfigurationException e) {
@@ -199,29 +206,79 @@ public class ValidateFilesMojo extends AbstractValidateMojo {
validationHelper.failBuildInCaseOfViolations(failOnValidationWarnings);
}
- private void validateDirectory(ValidationHelper validationHelper, ValidationExecutor executor, File baseDir, boolean isMetaInf) {
- Scanner scanner = buildContext.newScanner(baseDir);
+ private void validateDirectoryRecursively(ValidationHelper validationHelper, ValidationExecutor executor, Path baseDir, boolean isMetaInf) {
+ Scanner scanner = buildContext.newScanner(baseDir.toFile());
// make sure filtering does work equally as within the package goal
scanner.setExcludes(excludes);
scanner.addDefaultExcludes();
scanner.scan();
getLog().info("Scanning baseDir " + getProjectRelativeFilePath(baseDir) + "...");
- List<String> sortedFileNames = Arrays.asList(scanner.getIncludedFiles());
- sortedFileNames.sort(new DotContentXmlFirstComparator());
- for (String fileName : sortedFileNames) {
- validateFile(validationHelper, executor, baseDir, isMetaInf, fileName);
- }
- for (String relativeFile : scanner.getIncludedDirectories()) {
- validateFolder(validationHelper, executor, baseDir, isMetaInf, relativeFile);
+ SortedSet<Path> sortedFileAndFolderNames = sortAndEnrichFilesAndFolders(baseDir, scanner.getIncludedFiles(), scanner.getIncludedDirectories());
+
+ for (Path fileOrFolder : sortedFileAndFolderNames) {
+ getLog().debug("Scanning path " + getProjectRelativeFilePath(baseDir.resolve(fileOrFolder)) + "...");
+ if (Files.isDirectory(baseDir.resolve(fileOrFolder))) {
+ validateFolder(validationHelper, executor, baseDir, isMetaInf, fileOrFolder);
+ } else {
+ validateFile(validationHelper, executor, baseDir, isMetaInf, fileOrFolder);
+ }
}
}
+ /**
+ * Sorts the given files and directories with {@link ParentAndDotContentXmlFirstComparator}.
+ * In addition adds all potentially relevant (parent) node definitions.
+ * That is
+ * <ul>
+ * <li>sibling {@code .content.xml} files</li>
+ * <li>{@code .content.xml} below {@code .dir} suffixed folders</li>
+ * <li>parent folders</li>
+ * </ul>
+ * @param baseDir
+ * @param files
+ * @param directories
+ * @return the sorted set of files/folders
+ */
+ static SortedSet<Path> sortAndEnrichFilesAndFolders(Path baseDir, String[] files, String[] directories) {
+ // first sort by segments
+ NavigableSet<Path> paths = new TreeSet<>(new ParentAndDotContentXmlFirstComparator());
+ for (String file : files) {
+ paths.add(Paths.get(file));
+ }
+ for (String directory : directories) {
+ paths.add(Paths.get(directory));
+ }
+ // start with longest path first
+ Iterator<Path> pathIterator = paths.descendingIterator();
+ Set<Path> additionalPaths = new HashSet<>();
+ while (pathIterator.hasNext()) {
+ Path path = pathIterator.next();
+ // add in addition all potentially relevant parent node definitions
+ Path parent = path.getParent();
+ if (parent != null) {
+ if (!paths.contains(parent) && !additionalPaths.contains(parent) && Files.isDirectory(baseDir.resolve(parent))) {
+ additionalPaths.add(parent);
+ }
+ Path parentContentXml = parent.resolve(Constants.DOT_CONTENT_XML);
+ if (!paths.contains(parentContentXml) && !additionalPaths.contains(parentContentXml) && Files.exists(baseDir.resolve(parentContentXml))) {
+ additionalPaths.add(parentContentXml);
+ }
+ // and the node definition for https://jackrabbit.apache.org/filevault/vaultfs.html#Extended_File_aggregates
+ Path extendedFileAggregateContentXml = parent.resolve(path.getFileName().toString() + ".dir").resolve(Constants.DOT_CONTENT_XML);
+ if (!paths.contains(extendedFileAggregateContentXml) && !additionalPaths.contains(extendedFileAggregateContentXml) && Files.exists(baseDir.resolve(extendedFileAggregateContentXml))) {
+ additionalPaths.add(parentContentXml);
+ }
+ }
+ }
+ paths.addAll(additionalPaths);
+ return paths;
+ }
- private void validateFile(ValidationHelper validationHelper, ValidationExecutor executor, File baseDir, boolean isMetaInf, String relativeFile) {
- File absoluteFile = new File(baseDir, relativeFile);
- validationHelper.clearPreviousValidationMessages(buildContext, absoluteFile);
+ private void validateFile(ValidationHelper validationHelper, ValidationExecutor executor, Path baseDir, boolean isMetaInf, Path relativeFile) {
+ Path absoluteFile = baseDir.resolve(relativeFile);
+ validationHelper.clearPreviousValidationMessages(buildContext, absoluteFile.toFile());
getLog().debug("Validating file " + getProjectRelativeFilePath(absoluteFile) + "...");
- try (InputStream input = new FileInputStream(absoluteFile)) {
+ try (InputStream input = Files.newInputStream(absoluteFile)) {
validateInputStream(validationHelper, executor, input, baseDir, isMetaInf, relativeFile);
} catch (FileNotFoundException e) {
getLog().error("Could not find file " + getProjectRelativeFilePath(absoluteFile), e);
@@ -230,23 +287,23 @@ public class ValidateFilesMojo extends AbstractValidateMojo {
}
}
- private void validateFolder(ValidationHelper validationHelper, ValidationExecutor executor, File baseDir, boolean isMetaInf, String relativeFile) {
- File absoluteFile = new File(baseDir, relativeFile);
- validationHelper.clearPreviousValidationMessages(buildContext, absoluteFile);
- getLog().debug("Validating folder " + getProjectRelativeFilePath(absoluteFile) + "...");
+ private void validateFolder(ValidationHelper validationHelper, ValidationExecutor executor, Path baseDir, boolean isMetaInf, Path relativeFolder) {
+ Path absoluteFolder = baseDir.resolve(relativeFolder);
+ validationHelper.clearPreviousValidationMessages(buildContext, absoluteFolder.toFile());
+ getLog().debug("Validating folder " + getProjectRelativeFilePath(absoluteFolder) + "...");
try {
- validateInputStream(validationHelper, executor, null, baseDir, isMetaInf, relativeFile);
+ validateInputStream(validationHelper, executor, null, baseDir, isMetaInf, relativeFolder);
} catch (IOException e) {
- getLog().error("Could not validate folder " + getProjectRelativeFilePath(absoluteFile), e);
+ getLog().error("Could not validate folder " + getProjectRelativeFilePath(absoluteFolder), e);
}
}
- private void validateInputStream(ValidationHelper validationHelper, ValidationExecutor executor, InputStream input, File baseDir, boolean isMetaInf, String relativeFile) throws IOException {
+ private void validateInputStream(ValidationHelper validationHelper, ValidationExecutor executor, InputStream input, Path baseDir, boolean isMetaInf, Path relativeFile) throws IOException {
final Collection<ValidationViolation> messages;
if (isMetaInf) {
- messages = executor.validateMetaInf(input, Paths.get(relativeFile), baseDir.toPath());
+ messages = executor.validateMetaInf(input, relativeFile, baseDir);
} else {
- messages = executor.validateJcrRoot(input, Paths.get(relativeFile), baseDir.toPath());
+ messages = executor.validateJcrRoot(input, relativeFile, baseDir);
}
validationHelper.printMessages(messages, getLog(), buildContext, project.getBasedir().toPath());
}
@@ -300,4 +357,34 @@ public class ValidateFilesMojo extends AbstractValidateMojo {
}
return false;
}
+
+
+ /**
+ * Comparator on paths which makes sure that the parent folders come first, then a file in the parent folder called {@code .content.xml}
+ * and then all other subfolders/files ordered lexicographically.
+ */
+ static final class ParentAndDotContentXmlFirstComparator implements Comparator<Path> {
+ private final DotContentXmlFirstComparator dotXmlFirstComparator;
+
+
+ public ParentAndDotContentXmlFirstComparator() {
+ super();
+ this.dotXmlFirstComparator = new DotContentXmlFirstComparator();
+ }
+
+ @Override
+ public int compare(Path s1, Path s2) {
+ if (s1.getNameCount() < s2.getNameCount()) {
+ return -1;
+ } else if (s1.getNameCount() > s2.getNameCount()) {
+ return 1;
+ } else {
+ if (s1.getParent() != null && s1.getParent().equals(s2.getParent())) {
+ return dotXmlFirstComparator.compare(s1.getFileName().toString(), s2.getFileName().toString());
+ } else {
+ return s1.compareTo(s2);
+ }
+ }
+ }
+ }
}
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 811dadb..ebe93ba 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
@@ -85,14 +85,14 @@ public class ValidatePackageMojo extends AbstractValidateMojo {
try {
boolean foundPackage = false;
if (packageFile != null && !packageFile.toString().isEmpty() && !packageFile.isDirectory()) {
- validatePackage(validationHelper, packageFile);
+ 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());
+ validatePackage(validationHelper, attached.getFile().toPath());
foundPackage = true;
}
}
@@ -106,19 +106,19 @@ public class ValidatePackageMojo extends AbstractValidateMojo {
}
}
- private void validatePackage(ValidationHelper validationHelper, File file) throws IOException, ParserConfigurationException, SAXException, MojoExecutionException {
+ private void validatePackage(ValidationHelper validationHelper, Path file) throws IOException, ParserConfigurationException, SAXException, MojoExecutionException {
getLog().info("Start validating package " + getProjectRelativeFilePath(file) + "...");
// open file to extract the meta data for the validation context
ArchiveValidationContextImpl context;
ValidationExecutor executor;
- try (Archive archive = new ZipArchive(file)) {
+ try (Archive archive = new ZipArchive(file.toFile())) {
archive.open(true);
- context = new ArchiveValidationContextImpl(archive, file.toPath(), resolver, getLog());
+ context = new ArchiveValidationContextImpl(archive, file, resolver, getLog());
executor = validationExecutorFactory.createValidationExecutor(context, false, enforceRecursiveSubpackageValidation, getValidatorSettingsForPackage(context.getProperties().getId(), false));
if (executor != null) {
validationHelper.printUsedValidators(getLog(), executor, context, true);
- validateArchive(validationHelper, archive, file.toPath(), context, executor);
+ validateArchive(validationHelper, archive, file, context, executor);
} else {
throw new MojoExecutionException("No registered validators found!");
}
@@ -135,7 +135,7 @@ public class ValidatePackageMojo extends AbstractValidateMojo {
private void validateEntry(ValidationHelper validationHelper, Archive archive, Archive.Entry entry, Path entryPath, Path packagePath, ArchiveValidationContextImpl context,
ValidationExecutor executor) throws IOException, SAXException, ParserConfigurationException {
// sort children to make sure that .content.xml comes first!
- List<Archive.Entry> sortedEntryList = new ArrayList<Archive.Entry>(entry.getChildren());
+ List<Archive.Entry> sortedEntryList = new ArrayList<>(entry.getChildren());
sortedEntryList.sort(Comparator.comparing(Archive.Entry::getName, new DotContentXmlFirstComparator()));
for (Archive.Entry childEntry : sortedEntryList) {
diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/validator/impl/context/DirectoryValidationContext.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/validator/impl/context/DirectoryValidationContext.java
index ebc84a9..a9bb159 100644
--- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/validator/impl/context/DirectoryValidationContext.java
+++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/validator/impl/context/DirectoryValidationContext.java
@@ -48,10 +48,11 @@ public class DirectoryValidationContext implements ValidationContext {
private final PackageProperties properties;
private final DefaultWorkspaceFilter filter;
private List<PackageInfo> resolvedDependencies;
+ private final boolean isIncremental;
private static final Path RELATIVE_PROPERTIES_XML_PATH = Paths.get(Constants.VAULT_DIR, Constants.PROPERTIES_XML);
- public DirectoryValidationContext(@NotNull final File generatedMetaInfRootDirectory, final File metaInfRootDirectory, DependencyResolver resolver, @NotNull final Log log) throws IOException, ConfigurationException {
+ public DirectoryValidationContext(boolean isIncremental, @NotNull final File generatedMetaInfRootDirectory, final File metaInfRootDirectory, DependencyResolver resolver, @NotNull final Log log) throws IOException, ConfigurationException {
Path propertiesPath = null;
if (!Constants.META_INF.equals(generatedMetaInfRootDirectory.getName())) {
throw new IllegalArgumentException("The workDir must end with 'META-INF' but is '" + generatedMetaInfRootDirectory+"'");
@@ -82,6 +83,7 @@ public class DirectoryValidationContext implements ValidationContext {
filter.load(filterFile);
this.resolvedDependencies = resolver.resolve(getProperties().getDependencies(), getProperties().getDependenciesLocations(), log);
+ this.isIncremental = isIncremental;
}
@Override
@@ -109,4 +111,8 @@ public class DirectoryValidationContext implements ValidationContext {
return resolvedDependencies;
}
+ @Override
+ public boolean isIncremental() {
+ return isIncremental;
+ }
}
diff --git a/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/ValidateFilesMojoTest.java b/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/ValidateFilesMojoTest.java
new file mode 100644
index 0000000..7d97df9
--- /dev/null
+++ b/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/ValidateFilesMojoTest.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.jackrabbit.filevault.maven.packaging;
+
+import java.io.File;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class ValidateFilesMojoTest {
+
+ @Test
+ public void testSortAndEnrichFilesAndFolders() {
+ SortedSet<Path> expectedPaths = new TreeSet<>();
+ expectedPaths.add(Paths.get("apps"));
+ expectedPaths.add(Paths.get("apps", ".content.xml"));
+ expectedPaths.add(Paths.get("apps", "file"));
+ expectedPaths.add(Paths.get("apps", "huhu"));
+ expectedPaths.add(Paths.get("apps", "test"));
+ expectedPaths.add(Paths.get("apps", "test", ".content.xml"));
+ expectedPaths.add(Paths.get("apps", "test", "huhu"));
+ Assert.assertEquals(expectedPaths, ValidateFilesMojo.sortAndEnrichFilesAndFolders(Paths.get("base"), new String[] {
+ "apps" + File.separatorChar + "huhu",
+ "apps" + File.separatorChar + "file",
+ "apps" + File.separatorChar + "test" + File.separatorChar + "huhu",
+ "apps" + File.separatorChar + "test" + File.separatorChar + ".content.xml",
+ "apps" + File.separatorChar + "test" + File.separatorChar + ".content.xml", // add the same value two times to check that equality (derived from comparator) works correctly
+ "apps" + File.separatorChar + ".content.xml",
+ },
+ new String[]{
+ "apps",
+ "apps" + File.separatorChar + "test"
+ }));
+ }
+}
diff --git a/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ValidateFilesIT.java b/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ValidateFilesIT.java
index 0dbe2f0..c5d4c6c 100644
--- a/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ValidateFilesIT.java
+++ b/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/ValidateFilesIT.java
@@ -32,7 +32,7 @@ public class ValidateFilesIT {
.setTestGoals("clean", "process-classes") // make sure the validate-files mojo is not skipped
.setBuildExpectedToFail(true)
.build()
- .verifyExpectedLogLines(Paths.get("target","vault-work","META-INF","vault","filter.xml").toString());
+ .verifyExpectedLogLines(Paths.get("src","main","content", "META-INF","vault","filter.xml").toString());
}
@Test