Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Maven assembly plugin creates two unexpected jars

Tags:

java

maven

jar

I want to use maven-assembly-plugin to pack external dependencies into the application's jar file. When I call mvn install it creates two jar files, one with and one without the dependencies. (appname-version.jar and appname-version-jar-with-dependencies.jar)

My question is that why it creates two jar files?

Here is the plugin: (im not using any other plugin at the moment)

    <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
            <archive>
                <manifest>
                    <mainClass>com.coolapp.mainClass</mainClass>
                </manifest>
            </archive>
            <descriptorRefs>
                <descriptorRef>jar-with-dependencies</descriptorRef>
            </descriptorRefs>
        </configuration>
        <executions>
            <execution>
                <id>make-assembly</id> <!-- this is used for inheritance merges -->
                <phase>package</phase> <!-- bind to the packaging phase -->
                <goals>
                    <goal>single</goal>
                </goals>
            </execution>
        </executions>
    </plugin>

Thank you!

like image 244
Nandor Avatar asked Aug 25 '16 10:08

Nandor


1 Answers

You need to define the maven-jar-plugin to avoid creating the default jar. This is done by adding <phase>none</phase> under execution:

<plugin>
    <artifactId>maven-jar-plugin</artifactId>
    <version>3.0.2</version>
    <executions>
      <execution>
         <id>default-jar</id>
         <phase>none</phase>
      </execution>
    </executions>
</plugin>

All the resources/classes are still moved to the target folder, so maven-assembly can still execute itself correctly.

like image 111
alexbt Avatar answered Oct 05 '22 23:10

alexbt