diff options
author | gjoranv <gv@yahooinc.com> | 2023-06-13 14:08:52 +0200 |
---|---|---|
committer | gjoranv <gv@yahooinc.com> | 2023-06-13 14:12:48 +0200 |
commit | 6a0b5cbd3338a69d8c5e797135ad13b82b8a1b6e (patch) | |
tree | ecfde019e4d0d918e954e587348a5259d4c0922f /vespa-application-maven-plugin | |
parent | 75cdcbc2daae3ec9c538b69d817578eba875c276 (diff) |
Do not include ignored files to the application package.
- For now, only '.DS_Store' files are ignored.
Diffstat (limited to 'vespa-application-maven-plugin')
2 files changed, 25 insertions, 3 deletions
diff --git a/vespa-application-maven-plugin/src/main/java/com/yahoo/container/plugin/mojo/ApplicationMojo.java b/vespa-application-maven-plugin/src/main/java/com/yahoo/container/plugin/mojo/ApplicationMojo.java index 9120d95970d..c6d056675a8 100644 --- a/vespa-application-maven-plugin/src/main/java/com/yahoo/container/plugin/mojo/ApplicationMojo.java +++ b/vespa-application-maven-plugin/src/main/java/com/yahoo/container/plugin/mojo/ApplicationMojo.java @@ -2,6 +2,10 @@ package com.yahoo.container.plugin.mojo; import org.apache.commons.io.FileUtils; +import org.apache.commons.io.filefilter.IOFileFilter; +import org.apache.commons.io.filefilter.NameFileFilter; +import org.apache.commons.io.filefilter.NotFileFilter; +import org.apache.commons.io.filefilter.OrFileFilter; import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.resolver.ArtifactResolutionException; import org.apache.maven.plugin.AbstractMojo; @@ -12,10 +16,10 @@ import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.project.MavenProject; import java.io.File; +import java.io.FileFilter; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; -import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.util.Collections; import java.util.List; @@ -26,6 +30,8 @@ import java.util.List; @Mojo(name = "packageApplication", defaultPhase = LifecyclePhase.PACKAGE, threadSafe = true) public class ApplicationMojo extends AbstractMojo { + private static final List<String> IGNORED_FILES = List.of(".DS_Store"); + @Parameter(defaultValue = "${project}", readonly = true) protected MavenProject project; @@ -125,13 +131,21 @@ public class ApplicationMojo extends AbstractMojo { private void copyApplicationPackage(File applicationPackage, File applicationDestination) throws MojoExecutionException { if (applicationPackage.exists()) { try { - FileUtils.copyDirectory(applicationPackage, applicationDestination); + FileUtils.copyDirectory(applicationPackage, applicationDestination, ignoredFilesFilter()); } catch (IOException e) { throw new MojoExecutionException("Failed copying applicationPackage", e); } } } + static FileFilter ignoredFilesFilter() { + var ioFileFilters = IGNORED_FILES.stream() + .map(NameFileFilter::new) + .map(IOFileFilter.class::cast) + .toList(); + return new NotFileFilter(new OrFileFilter(ioFileFilters)); + } + private void copyModuleBundles(File moduleDir, File componentsDir) throws MojoExecutionException { File moduleTargetDir = new File(moduleDir, "target"); if (moduleTargetDir.exists()) { diff --git a/vespa-application-maven-plugin/src/test/java/com/yahoo/container/plugin/mojo/ApplicationMojoTest.java b/vespa-application-maven-plugin/src/test/java/com/yahoo/container/plugin/mojo/ApplicationMojoTest.java index 6f134a5ff86..de3b5f8d0cd 100644 --- a/vespa-application-maven-plugin/src/test/java/com/yahoo/container/plugin/mojo/ApplicationMojoTest.java +++ b/vespa-application-maven-plugin/src/test/java/com/yahoo/container/plugin/mojo/ApplicationMojoTest.java @@ -1,8 +1,10 @@ package com.yahoo.container.plugin.mojo; -import org.junit.Assert; import org.junit.Test; +import java.io.File; + +import static com.yahoo.container.plugin.mojo.ApplicationMojo.ignoredFilesFilter; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; @@ -12,6 +14,12 @@ import static org.junit.Assert.assertTrue; public class ApplicationMojoTest { @Test + public void it_does_not_include_files_to_be_ignored() { + var dsStore = new File("target/classes/.DS_Store"); + assertFalse(ignoredFilesFilter().accept(dsStore)); + } + + @Test public void testRegex() { assertTrue(ApplicationMojo.isVespaParent("ai.vespa")); assertTrue(ApplicationMojo.isVespaParent("ai.vespa.hosted")); |