question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

NPE from Assembly plugin when POM packaging is used

See original GitHub issue

Description

We use d-m-p with assembly file and everything is working great if default JAR Maven packaging is used. However this Maven module is meant for building docker image only, it does not contain any code. Attempts to use <packaging>pom</packaging> to avoid warnings about missing sources result in NPE thrown from Assembly plugin (exception trace is below).

The exception is thrown from code of Assembly plugin, but it can be used directly in modules with POM packaging - tested with version 3.1.0

Info

  • d-m-p version : 0.28.0
  • Maven version (mvn -v) : 3.5.2

Exception trace

Caused by: org.apache.maven.plugin.PluginExecutionException: Execution docker-build of goal io.fabric8:docker-maven-plugin:0.28.0:build failed.
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:145)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:208)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:309)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:194)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:107)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:955)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:290)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:194)
    at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
Caused by: java.lang.NullPointerException
    at org.apache.maven.plugins.assembly.archive.archiver.AssemblyProxyArchiver$DefaultFileInfo.isFile (AssemblyProxyArchiver.java:1025)
    at org.apache.maven.plugins.assembly.filter.ComponentsXmlArchiverFileFilter.isSelected (ComponentsXmlArchiverFileFilter.java:179)
    at org.apache.maven.plugins.assembly.archive.archiver.AssemblyProxyArchiver.acceptFile (AssemblyProxyArchiver.java:794)
    at org.apache.maven.plugins.assembly.archive.archiver.AssemblyProxyArchiver.addFile (AssemblyProxyArchiver.java:418)
    at org.apache.maven.plugins.assembly.archive.task.AddArtifactTask.asFile (AddArtifactTask.java:175)
    at org.apache.maven.plugins.assembly.archive.task.AddArtifactTask.execute (AddArtifactTask.java:132)
    at org.apache.maven.plugins.assembly.archive.task.AddDependencySetsTask.addNormalArtifact (AddDependencySetsTask.java:263)
    at org.apache.maven.plugins.assembly.archive.task.AddDependencySetsTask.addDependencySet (AddDependencySetsTask.java:175)
    at org.apache.maven.plugins.assembly.archive.task.AddDependencySetsTask.execute (AddDependencySetsTask.java:120)
    at org.apache.maven.plugins.assembly.archive.phase.DependencySetAssemblyPhase.execute (DependencySetAssemblyPhase.java:104)
    at org.apache.maven.plugins.assembly.archive.DefaultAssemblyArchiver.createArchive (DefaultAssemblyArchiver.java:181)
    at io.fabric8.maven.docker.assembly.DockerAssemblyManager.createAssemblyArchive (DockerAssemblyManager.java:466)
    at io.fabric8.maven.docker.assembly.DockerAssemblyManager.createDockerTarArchive (DockerAssemblyManager.java:115)
    at io.fabric8.maven.docker.service.ArchiveService.createArchive (ArchiveService.java:123)
    at io.fabric8.maven.docker.service.ArchiveService.createArchive (ArchiveService.java:118)
    at io.fabric8.maven.docker.service.BuildService.buildImage (BuildService.java:113)
    at io.fabric8.maven.docker.service.BuildService.buildImage (BuildService.java:61)
    at io.fabric8.maven.docker.BuildMojo.buildAndTag (BuildMojo.java:73)
    at io.fabric8.maven.docker.BuildMojo.processImageConfig (BuildMojo.java:104)
    at io.fabric8.maven.docker.BuildMojo.executeInternal (BuildMojo.java:60)
    at io.fabric8.maven.docker.AbstractDockerMojo.execute (AbstractDockerMojo.java:225)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:134)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:208)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:309)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:194)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:107)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:955)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:290)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:194)
    at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
  • If it’s a bug, how to reproduce :

pom.xml, removal of <packaging>pom</packaging> line helps to avoid NPE, but adds warnings from maven-jar-plugin

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>xxxxx.xxxx.xxxx</groupId>
    <artifactId>docker-sample</artifactId>
    <packaging>pom</packaging>

    <name>Docker Image Sample</name>
    <description>Hello-world application to run in docker container</description>

    <properties>
        <result.service.jar>myservice.jar</result.service.jar>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>io.fabric8</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.28.0</version>
                <executions>
                    <execution>
                        <id>docker-build</id>
                        <!-- by default docker build happens at install phase -->
                        <phase>package</phase>
                        <goals>
                            <goal>build</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>default</id>
                        <goals>
                            <goal>push</goal>
                            <goal>start</goal>
                            <!-- always use stop because it also removes exited container -->
                            <goal>stop</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <images>
                        <image>
                            <name>${docker.image.prefix}/${project.artifactId}:${project.version}</name>
                            <build>
                                <!-- see documentation on http://dmp.fabric8.io/#docker:build -->
                                <dockerFileDir>${project.basedir}/src/main/docker</dockerFileDir>
                                <assembly>
                                    <!-- assembly-like plugin prepares all files in "maven" folder next to filtered "Dockerfile" -->
                                    <descriptor>${project.basedir}/src/main/docker/docker-assembly.xml</descriptor>
                                </assembly>
                            </build>
                            <run>
                                <wait>
                                    <exit>0</exit>
                                    <!-- give a minute to complete the test -->
                                    <time>5000</time>
                                </wait>
                                <log>
                                    <prefix>%c&gt; </prefix>
                                    <color>cyan</color>
                                </log>
                            </run>
                        </image>
                    </images>
                </configuration>
            </plugin>

        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>xxxxx.xxxx.xxxx</groupId>
            <artifactId>docker-playground-java-app</artifactId>
            <version>0.0.27-SNAPSHOT</version>
        </dependency>
    </dependencies>

</project>

referenced in pom.xml docker-assembly.xml

<?xml version="1.0" encoding="UTF-8"?>
<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">

    <baseDirectory>.</baseDirectory>

    <dependencySets>
        <dependencySet>
            <includes>
                <include>*:docker-playground-java-app</include>
            </includes>
            <outputFileNameMapping>${result.service.jar}</outputFileNameMapping>
            <unpack>false</unpack>
        </dependencySet>
    </dependencySets>

</assembly>

Issue Analytics

  • State:closed
  • Created 5 years ago
  • Reactions:2
  • Comments:7 (1 by maintainers)

github_iconTop GitHub Comments

1reaction
daniel-husscommented, Oct 16, 2019

I was able to fix this break the build in a different way (see below) by updating the assembly plugin dependency to 3.1.1:

<plugin>
    <groupId>io.fabric8</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>0.31.0</version>
    <!-- ... -->
    <dependencies>
        <dependency>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.1.1</version>
        </dependency>
    </dependencies>
</plugin>
0reactions
slawekjaranowskicommented, Oct 17, 2022

Bug is in docker-m-p - fixed in mentioned PR

Read more comments on GitHub >

github_iconTop Results From Across the Web

maven-assembly-plugin throws ambiguous ... - Stack Overflow
maven-assembly-plugin throws ambiguous NullPointerException ... this is used for inheritance merges --> <phase>package</phase> <!
Read more >
maven-assembly-plugin mysterious error - Apache Mail Archives
Hi, I'm doing some refactoring of some existing projects - mostly we are moving from SVN to GIT and making a larger project...
Read more >
Re: NullPointerException during maven-assembly-plugin
You've hit a bug with the new version of the assembly plugin. This is why it is good to specify the versions of...
Read more >
Maven Packaging Types - Baeldung
Maven offers many default packaging types that include a jar, war, ear, pom, rar, ejb, and maven-plugin. Each packaging type follows a build ......
Read more >
throw ”Cannot find class in classpath:*****.testclass” when ...
I suffered this issue for a long time, I create maven project to write test cases, use below pom.xml and assembly.xml to build...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found