From 6a0b5cbd3338a69d8c5e797135ad13b82b8a1b6e Mon Sep 17 00:00:00 2001 From: gjoranv Date: Tue, 13 Jun 2023 14:08:52 +0200 Subject: Do not include ignored files to the application package. - For now, only '.DS_Store' files are ignored. --- .../yahoo/container/plugin/mojo/ApplicationMojo.java | 18 ++++++++++++++++-- .../container/plugin/mojo/ApplicationMojoTest.java | 10 +++++++++- 2 files changed, 25 insertions(+), 3 deletions(-) (limited to 'vespa-application-maven-plugin') 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 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; @@ -11,6 +13,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")); -- cgit v1.2.3