Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 向SBT中的ProGuardLibraryJAR添加非托管JAR_Scala_Classpath_Sbt_Proguard_Xsbt Proguard Plugin - Fatal编程技术网

Scala 向SBT中的ProGuardLibraryJAR添加非托管JAR

Scala 向SBT中的ProGuardLibraryJAR添加非托管JAR,scala,classpath,sbt,proguard,xsbt-proguard-plugin,Scala,Classpath,Sbt,Proguard,Xsbt Proguard Plugin,我正在尝试将sbt与以下插件一起使用。到目前为止,除了proguard将所有非托管jar放入最终的min.jar文件(导致多个jar发生冲突)之外,我对插件没有任何问题。Proguard具有proguardLibraryJars标志,允许您为Proguard指定要排除的JAR 本质上,我想使用插件将TaskKey unamangedJars中的所有JAR添加到ProGuardLibraryJAR中,即执行类似的操作 lazy val proguard = proguardSettings ++

我正在尝试将sbt与以下插件一起使用。到目前为止,除了proguard将所有非托管jar放入最终的min.jar文件(导致多个jar发生冲突)之外,我对插件没有任何问题。Proguard具有proguardLibraryJars标志,允许您为Proguard指定要排除的JAR

本质上,我想使用插件将TaskKey unamangedJars中的所有JAR添加到ProGuardLibraryJAR中,即执行类似的操作

lazy val proguard = proguardSettings ++ Seq(
    proguardOptions := Seq(
      keepMain("com.test.FacebookPostScheduler"),
      keepMain("org.postgresql.Driver")
    ),
    proguardLibraryJars <++= unmanagedClasspath

  )
错误


您将如何使用Build.scala(而不是Build.SBT)编写我使用最新SBT(0.11.3-2)尝试执行的操作?

我有一个SBT插件的公共存储库,可以将JAR传递给proguard。它不使用proguard插件,但代码可能会帮助您了解如何收集依赖项

寻找:

private def getDepsJars(project: ProjectRef, bs: BuildStructure) = forAllProjects(project, bs) {p =>
    artifactPath in Compile in packageBin in p get bs.data
  }
这可能会给你一个开始的方法。它收集每个需要的罐子,这是你通常想要的,而不仅仅是非托管的

或者,你可以使用这个插件,或许可以进行协作。代码有点草率,还不打算发布。该插件还做了其他一些简单的事情,比如用pack200将所有内容压缩到一个jar中,并有一个自定义的类加载器在运行时从那里加载压缩的类。

,它是siasia/xsbt-proguard插件的继承者,似乎有一个非常好的选择:

默认情况下,Proguard将被指示包括Java运行时中除类以外的所有内容。要将其他库视为外部库(即将它们添加到传递给Proguard的
-LibraryJAR
列表中),请执行以下操作。下面是如何从库依赖项中选择名为“httpclient”的模块的示例:

proguardLibraryJars <++= (update) map (_.select(module = moduleFilter(name = "httpclient")))
proguardLibraryJars
private def getDepsJars(project: ProjectRef, bs: BuildStructure) = forAllProjects(project, bs) {p =>
    artifactPath in Compile in packageBin in p get bs.data
  }
proguardLibraryJars <++= (update) map (_.select(module = moduleFilter(name = "httpclient")))