如何从包装中排除不必要的非托管依赖项?

时间:2014-03-06 16:18:36

标签: scala playframework-2.0 sbt

我想创建一个独立版本的应用程序,并想知道我如何排除 要打包的非托管* .jar文件。这是“mariaDB4j-2.0-SNAPSHOT.jar”文件,仅我 在测试中使用,大​​约56MB。

我尝试将jar文件放入自定义目录'test / lib'。不幸的是,这并没有将mariaDB4j排除在包装之外。

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

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

对此有何想法?

干杯 奥利弗

3 个答案:

答案 0 :(得分:5)

我认为你想要添加到测试类路径。

两件事:

  1. 您可以使用show test:fullClasspath查看类路径中的内容,以确保您的jar在那里。使用inspect test:fullClasspath将显示用于测试的依赖项。
  2. 我认为您可以通过以下方式直接将jar添加到类路径中:

    测试中的

    fullClasspath + = Attributed.blank(baseDirectory.value /“test / lib / mariaDB4j-2.0-SNAPSHOT”)

  3. 希望有所帮助!

答案 1 :(得分:1)

这有效,但看起来有点夸大其词。更改非托管依赖项的基本目录,将文件包含在测试中并将其从编译中排除。

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" }

答案 2 :(得分:1)

不要使用非托管依赖项

如果您想将jar保留在源存储库中,只需在源代码树中使用基于文件的maven存储库

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

然后mvn在本地安装MariaDB4j并将结果内容从maven缓存复制到$ yourproject / repository

并像使用常规托管依赖项一样使用依赖项