Having a 3rd party jar included in Maven shaded jar without adding it to local repository

Viewed 43376

I already found an answer here on Stack Overflow how to include a 3rd party JAR in a project without installing it to a "local repository":

Can I add jars to maven 2 build classpath without installing them?

But, when I use the Maven Shade Plugin to create a JAR that includes all the dependencies of the project as well, the 3rd party JAR is not included automatically.

How can I make the Maven Shade Plugin add such a 3rd party JAR in to the shaded JAR?


As per the answer gotten, I made it work. What I did was, added this snippet to the beginning of my pom.xml:

<repositories>
  <repository>
    <id>repo</id>
    <url>file://${basedir}/repo</url>
  </repository>
</repositories>

Then added a dependency for my project, also to pom.xml:

<dependencies>
  <dependency>
    <groupId>dummy</groupId>
    <artifactId>dummy</artifactId>
    <version>0.0.0</version>
    <scope>compile</scope>
  </dependency>
</dependencies>

And then ran a command line to add a package to 'repo':

mvn org.apache.maven.plugins:maven-install-plugin:2.3.1:install-file
    -Dfile=<my-jar>.jar -DgroupId=dummy -DartifactId=dummy
    -Dversion=0.0.0 -Dpackaging=jar -DlocalRepositoryPath=`pwd`/repo/

(Not sure if the repo path needs to be a full path, but didn't want to take chances.)

The contents of the repo subdirectory is now:

repo/dummy/dummy/0.0.0/dummy-0.0.0.jar
repo/dummy/dummy/0.0.0/dummy-0.0.0.pom
repo/dummy/dummy/maven-metadata-local.xml

Now I can check this in to version control, and have no local or remote dependencies.

4 Answers

If you only need a quick and dirty solution, you can add the content of the extracted jar file to your src/main/resource directory.

Related