You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by tr...@apache.org on 2018/11/08 00:18:43 UTC
svn commit: r1846090 - in
/jackrabbit/commons/filevault-package-maven-plugin/trunk/src:
main/java/org/apache/jackrabbit/filevault/maven/packaging/
test/java/org/apache/jackrabbit/filevault/maven/packaging/it/
test/resources/test-projects/filter-tests/f...
Author: tripod
Date: Thu Nov 8 00:18:43 2018
New Revision: 1846090
URL: http://svn.apache.org/viewvc?rev=1846090&view=rev
Log:
JCRVLT-321 Warn for files not being included in the package due to being outside of filter roots (closes #19)
Added:
jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/
jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/META-INF/
jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/META-INF/vault/
jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/META-INF/vault/filter.xml
jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/jcr_root/
jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/jcr_root/apps/
jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/jcr_root/apps/.content.xml (with props)
jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/pom.xml
Modified:
jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java
jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/FilterIT.java
Modified: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java?rev=1846090&r1=1846089&r2=1846090&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/VaultMojo.java Thu Nov 8 00:18:43 2018
@@ -19,7 +19,9 @@ package org.apache.jackrabbit.filevault.
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
+import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
@@ -94,6 +96,17 @@ public class VaultMojo extends AbstractP
"${project.build.outputDirectory}"
)
private File[] jcrRootSourceDirectory;
+
+ /**
+ * Set to {@code true} to fail the build in case of files are being contained in the {@code jcrRootSourceDirectory}
+ * which are not covered by the filter rules and therefore would not end up in the package.
+ */
+ @Parameter(
+ property = "vault.failOnUncoveredSourceFiles",
+ required = true,
+ defaultValue = "false"
+ )
+ private boolean failOnUncoveredSourceFiles;
/**
* The name of the generated package ZIP file without the ".zip" file
@@ -243,6 +256,16 @@ public class VaultMojo extends AbstractP
}
}
}
+
+ Collection<File> uncoveredFiles = getUncoveredFiles(jcrSourceDirectory, prefix, contentPackageArchiver.getFiles().keySet());
+ if (!uncoveredFiles.isEmpty()) {
+ for (File uncoveredFile : uncoveredFiles) {
+ getLog().warn("File " + uncoveredFile + " not covered by a filter rule and therefore not contained in the resulting package");
+ }
+ if (failOnUncoveredSourceFiles) {
+ throw new MojoFailureException("The following files are not covered by a filter rule: \n" + StringUtils.join(uncoveredFiles.iterator(), ",\n"));
+ }
+ }
}
for (Map.Entry<String, File> entry : embeddedFiles.entrySet()) {
@@ -289,6 +312,28 @@ public class VaultMojo extends AbstractP
}
}
+ private Collection<File> getUncoveredFiles(final File sourceDirectory, final String prefix, final Collection<String> entryNames) throws IOException {
+ /*
+ * similar method as in {@link org.codehaus.plexus.components.io.resources.PlexusIoFileResourceCollection#getResources();}
+ */
+ DirectoryScanner scanner = new DirectoryScanner();
+ scanner.setBasedir(sourceDirectory);
+ scanner.setExcludes(excludes);
+ scanner.addDefaultExcludes();
+ scanner.scan();
+ return getUncoveredFiles(sourceDirectory, scanner.getIncludedFiles(), prefix, entryNames);
+ }
+
+ private Collection<File> getUncoveredFiles(final File sourceDirectory, final String[] relativeSourceFileNames, final String prefix, final Collection<String> entryNames) {
+ Collection<File> uncoveredFiles = new ArrayList<>();
+ for (String relativeSourceFileName : relativeSourceFileNames) {
+ if (!entryNames.contains(JCR_ROOT + prefix + relativeSourceFileName)) {
+ uncoveredFiles.add(new File(sourceDirectory, relativeSourceFileName));
+ }
+ }
+ return uncoveredFiles;
+ }
+
private MavenArchiveConfiguration getMavenArchiveConfiguration(File manifestFile) throws IOException {
if (archive == null) {
archive = new MavenArchiveConfiguration();
Modified: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/FilterIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/FilterIT.java?rev=1846090&r1=1846089&r2=1846090&view=diff
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/FilterIT.java (original)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/it/FilterIT.java Thu Nov 8 00:18:43 2018
@@ -157,4 +157,9 @@ public class FilterIT {
assertTrue("Marker file still exists.", marker.exists());
}
+
+ @Test
+ public void test_filter_not_covering_all_files() throws Exception {
+ verify("filter-not-covering-all-files", true);
+ }
}
Added: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/META-INF/vault/filter.xml
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/META-INF/vault/filter.xml?rev=1846090&view=auto
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/META-INF/vault/filter.xml (added)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/META-INF/vault/filter.xml Thu Nov 8 00:18:43 2018
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+ -->
+<workspaceFilter version="1.0">
+ <filter root="/apps2/test2"/>
+</workspaceFilter>
Added: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/jcr_root/apps/.content.xml
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/jcr_root/apps/.content.xml?rev=1846090&view=auto
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/jcr_root/apps/.content.xml (added)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/jcr_root/apps/.content.xml Thu Nov 8 00:18:43 2018
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+ -->
+
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+ jcr:primaryType="sling:Folder"/>
Propchange: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/jcr_root/apps/.content.xml
------------------------------------------------------------------------------
svn:executable = *
Added: jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/pom.xml?rev=1846090&view=auto
==============================================================================
--- jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/pom.xml (added)
+++ jackrabbit/commons/filevault-package-maven-plugin/trunk/src/test/resources/test-projects/filter-tests/filter-not-covering-all-files/pom.xml Thu Nov 8 00:18:43 2018
@@ -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.
+ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <!-- ====================================================================== -->
+ <!-- P R O J E C T D E S C R I P T I O N -->
+ <!-- ====================================================================== -->
+ <groupId>org.apache.jackrabbit.filevault</groupId>
+ <artifactId>package-plugin-test-pkg</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>content-package</packaging>
+
+ <description>Test project that defines an explicit filter in META-INF/vault/filter.xml</description>
+ <build>
+ <resources>
+ <resource>
+ <directory>${basedir}/META-INF</directory>
+ <targetPath>${project.build.directory}/vault-work/META-INF</targetPath>
+ </resource>
+ <resource>
+ <directory>${basedir}/jcr_root</directory>
+ <targetPath>.</targetPath>
+ </resource>
+ </resources>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>filevault-package-maven-plugin</artifactId>
+ <version>${plugin.version}</version>
+ <extensions>true</extensions>
+ <configuration>
+ <filterSource>filter.xml</filterSource>
+ <failOnUncoveredSourceFiles>true</failOnUncoveredSourceFiles>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>