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

Scala 如何从打包中排除不必要的非托管依赖项?,scala,playframework-2.0,sbt,Scala,Playframework 2.0,Sbt,我想创建我的应用程序的独立版本,我想知道如何排除 要打包的非托管*.jar文件。它是“mariaDB4j-2.0-SNAPSHOT.jar”文件I 用于测试,大约56MB 我试图将jar文件放入一个自定义目录“test/lib”。不幸的是,这并没有将mariaDB4j排除在包装之外 unmanagedBase <<= baseDirectory { base => base / "test/lib" } unmanagedJars in Test <<= unma

我想创建我的应用程序的独立版本,我想知道如何排除 要打包的非托管*.jar文件。它是“mariaDB4j-2.0-SNAPSHOT.jar”文件I 用于测试,大约56MB

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

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

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

unmanagedBase我认为您需要添加到测试类路径中

两件事:

  • 您可以使用
    showtest:fullClasspath
    检查类路径上的内容,以确保您的jar在那里。使用
    inspecttest:fullClasspath
    将显示用于测试的依赖项
  • 我认为您可以通过以下方式直接将jar添加到类路径:

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


  • 希望有帮助

    这是可行的,但看起来有点夸张。更改非托管依赖项的基本目录,将该文件包含到测试中,并将其从编译中排除

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

    非托管数据库不要使用非托管依赖项

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

    resolvers += "Private Maven Repository" at file(".").toURI.toURL+"/repository"
    
    然后mvn在本地安装MariaDB4j,并将结果从maven缓存复制到$yourproject/repository


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

    谢谢您的回答。它不起作用。mariaDB4j-2.0-SNAPSHOT.jar不可用,未编译。所有的测试都失败了。执行dist后,mariaDB4j-2.0-SNAPSHOT.jar未打包。这就完成了一半的任务…您是否要添加由当前项目编译的文件?您是否可以发布一个示例,说明如何像常规托管依赖一样使用依赖关系,或者如何从打包中排除mariaDB4j?libraryDependencies+=“ch.vorburger.mariaDB4j”%“mariaDB4j”%“2.0-SNAPSHOT”%“test”