Search in sources :

Example 1 with FileSet

use of org.codehaus.plexus.archiver.FileSet in project docker-maven-plugin by fabric8io.

the class MappingTrackArchiver method getAssemblyFiles.

/**
 * Get all files depicted by this assembly.
 *
 * @return assembled files
 */
public AssemblyFiles getAssemblyFiles(MavenSession session) {
    AssemblyFiles ret = new AssemblyFiles(new File(getDestFile().getParentFile(), assemblyName));
    // Where the 'real' files are copied to
    for (Addition addition : added) {
        Object resource = addition.resource;
        File target = new File(ret.getAssemblyDirectory(), addition.destination);
        if (resource instanceof File && addition.destination != null) {
            addFileEntry(ret, session, (File) resource, target);
        } else if (resource instanceof PlexusIoFileResource) {
            addFileEntry(ret, session, ((PlexusIoFileResource) resource).getFile(), target);
        } else if (resource instanceof FileSet) {
            FileSet fs = (FileSet) resource;
            DirectoryScanner ds = new DirectoryScanner();
            File base = addition.directory;
            ds.setBasedir(base);
            ds.setIncludes(fs.getIncludes());
            ds.setExcludes(fs.getExcludes());
            ds.setCaseSensitive(fs.isCaseSensitive());
            ds.scan();
            for (String f : ds.getIncludedFiles()) {
                File source = new File(base, f);
                File subTarget = new File(target, f);
                addFileEntry(ret, session, source, subTarget);
            }
        } else {
            throw new IllegalStateException("Unknown resource type " + resource.getClass() + ": " + resource);
        }
    }
    return ret;
}
Also used : PlexusIoFileResource(org.codehaus.plexus.components.io.resources.PlexusIoFileResource) FileSet(org.codehaus.plexus.archiver.FileSet) DirectoryScanner(org.apache.maven.shared.utils.io.DirectoryScanner)

Example 2 with FileSet

use of org.codehaus.plexus.archiver.FileSet in project docker-maven-plugin by fabric8io.

the class DockerAssemblyManagerTest method testArchiveCreationDockerfileNoAssembly.

@Test
public void testArchiveCreationDockerfileNoAssembly(@Injectable final TarArchiver tarArchiver, @Injectable final Logger logger) throws MojoExecutionException, NoSuchArchiverException {
    MojoParameters mojoParams = mockMojoParams(mockMavenProject());
    BuildImageConfiguration buildImageConfiguration = new BuildImageConfiguration.Builder().dockerFile(DockerAssemblyManagerTest.class.getResource("/docker/Dockerfile.test").getPath()).build();
    buildImageConfiguration.initAndValidate(logger);
    File tarArchive = assemblyManager.createDockerTarArchive("test_image", mojoParams, buildImageConfiguration, logger, null);
    assertNotNull(tarArchive);
    new Verifications() {

        {
            archiverManager.getArchiver("tar");
            times = 1;
            List<FileSet> fileSets = new ArrayList<>();
            tarArchiver.addFileSet(withCapture(fileSets));
            assertEquals(2, fileSets.size());
            assertEquals("build", fileSets.get(0).getDirectory().getName());
            assertNull(fileSets.get(0).getIncludes());
            assertNull(fileSets.get(0).getExcludes());
            assertArrayEquals(new String[] { "target/**", "Dockerfile.test" }, fileSets.get(1).getExcludes());
            assertNull(fileSets.get(1).getIncludes());
        }
    };
}
Also used : FileSet(org.codehaus.plexus.archiver.FileSet) ArchivedFileSet(org.codehaus.plexus.archiver.ArchivedFileSet) MojoParameters(io.fabric8.maven.docker.util.MojoParameters) ArrayList(java.util.ArrayList) Verifications(mockit.Verifications) File(java.io.File) BuildImageConfiguration(io.fabric8.maven.docker.config.BuildImageConfiguration) Test(org.junit.Test)

Example 3 with FileSet

use of org.codehaus.plexus.archiver.FileSet in project docker-maven-plugin by fabric8io.

the class DockerAssemblyManagerTest method testArchiveCreationDockerfileWithArchiveAssembly.

@Test
public void testArchiveCreationDockerfileWithArchiveAssembly(@Injectable final TarArchiver tarArchiver, @Injectable final Logger logger) throws MojoExecutionException, NoSuchArchiverException {
    MojoParameters mojoParams = mockMojoParams(mockMavenProject());
    BuildImageConfiguration buildImageConfiguration = new BuildImageConfiguration.Builder().dockerFile(DockerAssemblyManagerTest.class.getResource("/docker/Dockerfile.test").getPath()).assembly(new AssemblyConfiguration.Builder().mode(AssemblyMode.tar.name()).assemblyDef(new Assembly()).build()).build();
    buildImageConfiguration.initAndValidate(logger);
    File tarArchive = assemblyManager.createDockerTarArchive("test_image", mojoParams, buildImageConfiguration, logger, null);
    assertNotNull(tarArchive);
    new Verifications() {

        {
            archiverManager.getArchiver("tar");
            times = 1;
            List<FileSet> fileSets = new ArrayList<>();
            tarArchiver.addFileSet(withCapture(fileSets));
            assertEquals(1, fileSets.size());
            assertArrayEquals(new String[] { "target/**", "Dockerfile.test" }, fileSets.get(0).getExcludes());
            assertNull(fileSets.get(0).getIncludes());
            tarArchiver.addFile(new File("target/test_image/build/Dockerfile.test"), "Dockerfile.test");
            List<ArchivedFileSet> archivedFileSets = new ArrayList<>();
            tarArchiver.addArchivedFileSet(withCapture(archivedFileSets));
            assertEquals(1, archivedFileSets.size());
            assertEquals(new File("target/test_image/build/maven.tar"), archivedFileSets.get(0).getArchive());
            assertEquals("maven/", archivedFileSets.get(0).getPrefix());
        }
    };
}
Also used : FileSet(org.codehaus.plexus.archiver.FileSet) ArchivedFileSet(org.codehaus.plexus.archiver.ArchivedFileSet) ArrayList(java.util.ArrayList) ArchivedFileSet(org.codehaus.plexus.archiver.ArchivedFileSet) Verifications(mockit.Verifications) BuildImageConfiguration(io.fabric8.maven.docker.config.BuildImageConfiguration) AssemblyConfiguration(io.fabric8.maven.docker.config.AssemblyConfiguration) MojoParameters(io.fabric8.maven.docker.util.MojoParameters) File(java.io.File) Assembly(org.apache.maven.plugins.assembly.model.Assembly) Test(org.junit.Test)

Example 4 with FileSet

use of org.codehaus.plexus.archiver.FileSet in project docker-maven-plugin by fabric8io.

the class DockerAssemblyManagerTest method testArchiveCreationDockerfileWithMultipleArchiveAssemblies.

@Test
public void testArchiveCreationDockerfileWithMultipleArchiveAssemblies(@Injectable final TarArchiver tarArchiver, @Injectable final Logger logger) throws MojoExecutionException, NoSuchArchiverException {
    MojoParameters mojoParams = mockMojoParams(mockMavenProject());
    BuildImageConfiguration buildImageConfiguration = new BuildImageConfiguration.Builder().dockerFile(DockerAssemblyManagerTest.class.getResource("/docker/Dockerfile.test").getPath()).assemblies(Arrays.asList(new AssemblyConfiguration.Builder().name("first").mode(AssemblyMode.tar.name()).assemblyDef(new Assembly()).build(), new AssemblyConfiguration.Builder().name("second").mode(AssemblyMode.tar.name()).assemblyDef(new Assembly()).build())).build();
    buildImageConfiguration.initAndValidate(logger);
    File tarArchive = assemblyManager.createDockerTarArchive("test_image", mojoParams, buildImageConfiguration, logger, null);
    assertNotNull(tarArchive);
    new Verifications() {

        {
            archiverManager.getArchiver("tar");
            times = 1;
            List<FileSet> fileSets = new ArrayList<>();
            tarArchiver.addFileSet(withCapture(fileSets));
            assertEquals(1, fileSets.size());
            assertArrayEquals(new String[] { "target/**", "Dockerfile.test" }, fileSets.get(0).getExcludes());
            assertNull(fileSets.get(0).getIncludes());
            tarArchiver.addFile(new File("target/test_image/build/Dockerfile.test"), "Dockerfile.test");
            List<ArchivedFileSet> archivedFileSets = new ArrayList<>();
            tarArchiver.addArchivedFileSet(withCapture(archivedFileSets));
            assertEquals(2, archivedFileSets.size());
            assertEquals(new File("target/test_image/build/first.tar"), archivedFileSets.get(0).getArchive());
            assertEquals("first/", archivedFileSets.get(0).getPrefix());
            assertEquals(new File("target/test_image/build/second.tar"), archivedFileSets.get(1).getArchive());
            assertEquals("second/", archivedFileSets.get(1).getPrefix());
        }
    };
}
Also used : FileSet(org.codehaus.plexus.archiver.FileSet) ArchivedFileSet(org.codehaus.plexus.archiver.ArchivedFileSet) ArrayList(java.util.ArrayList) ArchivedFileSet(org.codehaus.plexus.archiver.ArchivedFileSet) Verifications(mockit.Verifications) BuildImageConfiguration(io.fabric8.maven.docker.config.BuildImageConfiguration) AssemblyConfiguration(io.fabric8.maven.docker.config.AssemblyConfiguration) MojoParameters(io.fabric8.maven.docker.util.MojoParameters) File(java.io.File) Assembly(org.apache.maven.plugins.assembly.model.Assembly) Test(org.junit.Test)

Example 5 with FileSet

use of org.codehaus.plexus.archiver.FileSet in project docker-maven-plugin by fabric8io.

the class DockerAssemblyManagerTest method testArchiveCreationDockerfileWithDirAssembly.

@Test
public void testArchiveCreationDockerfileWithDirAssembly(@Injectable final TarArchiver tarArchiver, @Injectable final Logger logger) throws MojoExecutionException, NoSuchArchiverException {
    MojoParameters mojoParams = mockMojoParams(mockMavenProject());
    BuildImageConfiguration buildImageConfiguration = new BuildImageConfiguration.Builder().dockerFile(DockerAssemblyManagerTest.class.getResource("/docker/Dockerfile.test").getPath()).assembly(new AssemblyConfiguration.Builder().mode(AssemblyMode.dir.name()).build()).build();
    buildImageConfiguration.initAndValidate(logger);
    File tarArchive = assemblyManager.createDockerTarArchive("test_image", mojoParams, buildImageConfiguration, logger, null);
    assertNotNull(tarArchive);
    new Verifications() {

        {
            archiverManager.getArchiver("tar");
            times = 1;
            List<FileSet> fileSets = new ArrayList<>();
            tarArchiver.addFileSet(withCapture(fileSets));
            assertEquals(2, fileSets.size());
            assertEquals("build", fileSets.get(0).getDirectory().getName());
            assertNull(fileSets.get(0).getIncludes());
            assertNull(fileSets.get(0).getExcludes());
            assertArrayEquals(new String[] { "target/**", "Dockerfile.test" }, fileSets.get(1).getExcludes());
            assertNull(fileSets.get(1).getIncludes());
        }
    };
}
Also used : FileSet(org.codehaus.plexus.archiver.FileSet) ArchivedFileSet(org.codehaus.plexus.archiver.ArchivedFileSet) MojoParameters(io.fabric8.maven.docker.util.MojoParameters) ArrayList(java.util.ArrayList) Verifications(mockit.Verifications) File(java.io.File) BuildImageConfiguration(io.fabric8.maven.docker.config.BuildImageConfiguration) Test(org.junit.Test)

Aggregations

FileSet (org.codehaus.plexus.archiver.FileSet)5 BuildImageConfiguration (io.fabric8.maven.docker.config.BuildImageConfiguration)4 MojoParameters (io.fabric8.maven.docker.util.MojoParameters)4 File (java.io.File)4 ArrayList (java.util.ArrayList)4 Verifications (mockit.Verifications)4 ArchivedFileSet (org.codehaus.plexus.archiver.ArchivedFileSet)4 Test (org.junit.Test)4 AssemblyConfiguration (io.fabric8.maven.docker.config.AssemblyConfiguration)2 Assembly (org.apache.maven.plugins.assembly.model.Assembly)2 DirectoryScanner (org.apache.maven.shared.utils.io.DirectoryScanner)1 PlexusIoFileResource (org.codehaus.plexus.components.io.resources.PlexusIoFileResource)1