JCRVLT-714 Support multiple source directories
WIP
diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/mojo/VaultMojo.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/mojo/VaultMojo.java
index 55d37e6..7c57a14 100644
--- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/mojo/VaultMojo.java
+++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/mojo/VaultMojo.java
@@ -516,48 +516,22 @@
}
// find the source directory
final File jcrSourceDirectory = getJcrSourceDirectory();
- // include content from build only if it exists
- if (jcrSourceDirectory != null && jcrSourceDirectory.exists()) {
- if (jcrSourceDirectory.getAbsoluteFile().toPath().normalize().startsWith(workDirectory.getAbsoluteFile().toPath().normalize())) {
- throw new MojoFailureException("jcrSourceDirectory ("+jcrSourceDirectory+") must be outside of workDirectory ("+ workDirectory + ")!");
- }
- getLog().info("Packaging content from " + getProjectRelativeFilePath(jcrSourceDirectory));
- Map<File, File> overwrittenFiles = addSourceDirectory(mavenResourcesExecution, contentPackageArchiver, jcrSourceDirectory, filters, embeddedFiles);
- duplicateFiles.putAll(overwrittenFiles);
+ addSourceDirectory(mavenResourcesExecution, contentPackageArchiver, jcrSourceDirectory, filters, embeddedFiles);
- if (!duplicateFiles.isEmpty()) {
- for (Entry<File, File> entry : duplicateFiles.entrySet()) {
- String message = "Found duplicate file '" + entry.getKey() + "' from sources " + getProjectRelativeFilePath(protectedFiles.get(entry.getKey()))
- + " and " + getProjectRelativeFilePath(entry.getValue()) + ".";
- if (failOnDuplicateEntries) {
- getLog().error(message);
- } else {
- getLog().warn(message);
- }
- }
+
+ if (!duplicateFiles.isEmpty()) {
+ for (Entry<File, File> entry : duplicateFiles.entrySet()) {
+ String message = "Found duplicate file '" + entry.getKey() + "' from sources " + getProjectRelativeFilePath(protectedFiles.get(entry.getKey()))
+ + " and " + getProjectRelativeFilePath(entry.getValue()) + ".";
if (failOnDuplicateEntries) {
- throw new MojoFailureException(
- "Found " + duplicateFiles.size() + " duplicate file(s) in content package, see above errors for details.");
+ getLog().error(message);
+ } else {
+ getLog().warn(message);
}
}
-
- // check for uncovered files (i.e. files from the source which are not even added to the content package)
- Collection<File> uncoveredFiles = getUncoveredFiles(jcrSourceDirectory, excludes, prefix,
- contentPackageArchiver.getFiles().keySet());
- if (!uncoveredFiles.isEmpty()) {
- for (File uncoveredFile : uncoveredFiles) {
- String message = "File " + getProjectRelativeFilePath(uncoveredFile)
- + " not covered by a filter rule and therefore not contained in the resulting package";
- if (failOnUncoveredSourceFiles) {
- getLog().error(message);
- } else {
- getLog().warn(message);
- }
- }
- if (failOnUncoveredSourceFiles) {
- throw new MojoFailureException("The following files are not covered by a filter rule: \n"
- + StringUtils.join(uncoveredFiles.iterator(), ",\n"));
- }
+ if (failOnDuplicateEntries) {
+ throw new MojoFailureException(
+ "Found " + duplicateFiles.size() + " duplicate file(s) in content package, see above errors for details.");
}
}
@@ -602,8 +576,17 @@
}
private Map<File, File> addSourceDirectory(MavenResourcesExecution mavenResourcesExecution, ContentPackageArchiver contentPackageArchiver, File jcrSourceDirectory, Filters filters,
- Map<String, File> embeddedFiles) throws MavenFilteringException {
+ Map<String, File> embeddedFiles) throws MavenFilteringException, MojoFailureException {
Map<File, File> duplicateFiles = new HashMap<>();
+
+ if (jcrSourceDirectory == null || !jcrSourceDirectory.exists()) {
+ return Collections.emptyMap();
+
+ }
+ if (jcrSourceDirectory.getAbsoluteFile().toPath().normalize().startsWith(getWorkDirectory(false).getAbsoluteFile().toPath().normalize())) {
+ throw new MojoFailureException("jcrSourceDirectory ("+jcrSourceDirectory+") must be outside of workDirectory ("+ workDirectory + ")!");
+ }
+ getLog().info("Packaging content from " + getProjectRelativeFilePath(jcrSourceDirectory));
// See GRANITE-16348
// we want to build a list of all the root directories in the order they were specified in the filter
// but ignore the roots that don't point to a directory
@@ -654,6 +637,24 @@
}
}
+ // check for uncovered files (i.e. files from the source which are not even added to the content package)
+ Collection<File> uncoveredFiles = getUncoveredFiles(jcrSourceDirectory, excludes, prefix,
+ contentPackageArchiver.getFiles().keySet());
+ if (!uncoveredFiles.isEmpty()) {
+ for (File uncoveredFile : uncoveredFiles) {
+ String message = "File " + getProjectRelativeFilePath(uncoveredFile)
+ + " not covered by a filter rule and therefore not contained in the resulting package";
+ if (failOnUncoveredSourceFiles) {
+ getLog().error(message);
+ } else {
+ getLog().warn(message);
+ }
+ }
+ if (failOnUncoveredSourceFiles) {
+ throw new MojoFailureException("The following files are not covered by a filter rule: \n"
+ + StringUtils.join(uncoveredFiles.iterator(), ",\n"));
+ }
+ }
return duplicateFiles;
}