2010-12-28 7 views
1

jar, die lustig ist, aber meine Projektkonfiguration ist alles ausführbare jar zu erzeugen, außer meine Projektklassen bis zur endgültigen Glas und fügte hinzu:sbt proguard Plugin setzen nicht die Klassen

import sbt._ 

class ProjectDescriptor(info: ProjectInfo) extends DefaultProject(info) with ProguardProject{ 

    override def mainClass = Some("org.myproject.MyClass") 

    override def proguardOptions = List(
    "-keepclasseswithmembers public class * { public static void main(java.lang.String[]); }", 
    "-dontoptimize", 
    "-dontobfuscate", 
    proguardKeepLimitedSerializability, 
    proguardKeepAllScala, 
    "-keep interface scala.ScalaObject" 
) 
    val scalaLibraryPath = "<...>/project/boot/scala-2.8.0/lib" 
    override def proguardInJars = super.proguardInJars +++ Path.fromFile(scalaLibraryPath) 
} 

Wie es zu beheben?

Antwort

0

Anstelle von ProGuard verwende ich das OneJar-Plugin, um ausführbare Dateien mit sbt-onejar zu erstellen. Es ist viel einfacher, da Sie sich nicht mit einer Reihe von Optionen wie ProGuard herumschlagen müssen.

0

Ich bin mir nicht sicher, was ProguardProject bietet. Aber ich denke, Sie können versuchen

ProguardKeys.options in Proguard ++= Seq(
    ProguardOptions.keepMain("com.you.main.class") 
) 

Dies funktioniert für mich.