OliverKK
OliverKK

Reputation: 505

How to exclude unnecessary unmanaged dependencies from packaging?

I want to create a standalone version of my application and was wondering how i could exclude an unmanaged *.jar file to be packaged. It's the "mariaDB4j-2.0-SNAPSHOT.jar" file I solely use in tests which is about 56MB huge.

I tried to put the jar file into a custom directory 'test/lib'. Unfortunately, this did not exclude mariaDB4j from packaging.

unmanagedBase <<= baseDirectory { base => base / "test/lib" }

unmanagedJars in Test <<= unmanagedBase  map { base => (base ** "mariaDB4j-2.0-SNAPSHOT.jar").classpath }

Any thoughts on this?

Cheers Oliver

Upvotes: 6

Views: 1734

Answers (3)

OlegYch
OlegYch

Reputation: 1097

don't use unmanaged dependencies

if you want to keep the jar in your source repository just use a file based maven repository in your source tree with

resolvers += "Private Maven Repository" at file(".").toURI.toURL+"/repository"

then mvn install MariaDB4j locally and copy resulting stuff from maven cache to $yourproject/repository

and use the dependency like a regular managed dependency

Upvotes: 1

OliverKK
OliverKK

Reputation: 505

This works, but it looks a little overstated. Changing the base directory of the unmanaged dependencies, include the file to the test's and exclude it from compile.

unmanagedBase <<= baseDirectory { base => base / "test/lib" }

unmanagedJars in Test <<= unmanagedBase  map { base => (base ** "mariaDB4j-2.0-SNAPSHOT.jar").classpath }

excludeFilter in unmanagedJars in Compile := "mariaDB4j-2.0-SNAPSHOT.jar"

excludeFilter in unmanagedJars in Compile ~= { _ || "mariaDB4j-2.0-SNAPSHOT.jar" }

Upvotes: 1

jsuereth
jsuereth

Reputation: 5624

I think you want to add to the testing classpath.

Two things:

  1. You can check out what's on the classpath using show test:fullClasspath to make sure your jar is on there. Using inspect test:fullClasspath will show you what the dependencies used for testing are.
  2. I think you can directly add your jar to the classpath via:

    fullClasspath in Test += Attributed.blank(baseDirectory.value / "test/lib/mariaDB4j-2.0-SNAPSHOT")

Hope that helps!

Upvotes: 5

Related Questions