Ich bin relativ neu in der Scala und Sbt Welt und ich versuche, alle meine neuen Projekte mit sbt zu verwalten, anstatt Maven zu verwenden. Aber jetzt bin ich an einem Punkt, wo ich nicht weiter weiß, weil ich kein sbt Gegenstück für das mavnen-Schattenplugin finden kann. Was ich nur gefunden habe, waren Plugins, die alle Abhängigkeiten enthalten, aber das ist nicht das, was ich brauche. Kennt jemand ein Plugin, um bestimmte Abhängigkeiten in das jar zu integrieren?maven-shade wie Plugin für SBT
Antwort
sbt-Montage 0.14.0 fügt shading Unterstützung .
sbt-assembly kann Klassen von Ihren Projekten oder von den Bibliotheksabhängigkeiten abschirmen. Mit Jar Jar Links wird die Bytecode-Umwandlung (über ASM) verwendet, um Verweise auf die umbenannten Klassen zu ändern.
assemblyShadeRules in assembly := Seq(
ShadeRule.rename("org.apache.commons.io.**" -> "[email protected]").inAll
)
Ich bin auf der Suche nach einer ähnlichen Sache wie ich bin total satt mit Cross-Version Suffix-Fehler und deduplizieren Fehler von sbt-Assembly.
ich es geschafft „onejar“ Plugin zu finden, aber es wurde nicht für ein ganzes Jahr aktualisiert, lassen Sie mich wissen, wenn Werke: https://github.com/sbt/sbt-onejar
ich Erfolg mit Proguard mit dem sbt-proguard Plugin hatte. Es hat eine Weile gedauert, bis ich es eingerichtet hatte, und ich musste einige Proguard-Funktionen ausschalten, um es zum Laufen zu bringen, aber am Ende bekam ich, was ich wollte: ein einzelnes Glas, das ich mit "java -jar" ausführen konnte. sogar auf einem System ohne Scala installiert.
Hier ist mein project/plugins.sbt
das Plugin zu aktivieren:
resolvers += Resolver.url("sbt-plugin-releases-scalasbt", url("http://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/"))(Resolver.ivyStylePatterns)
addSbtPlugin("com.typesafe.sbt" % "sbt-proguard" % "0.2.2")
Und sind hier einige Auszüge aus meinen build.sbt es zu konfigurieren:
scalaVersion := "2.10.2"
proguardSettings
ProguardKeys.options in Proguard += ProguardOptions.keepMain("io.package.my.app.Main")
ProguardKeys.options in Proguard ++= Seq(
"-keep class com.sun.xml.wss.impl.misc.XWSSProcessorFactory2_0Impl { *; }", // created dynamically by XWSSProcessorFactory
//
"-dontshrink",
"-dontobfuscate",
"-dontoptimize",
//
// Don't warn is necessary to avoid ProGuard refusing to build the jar.
//
"-dontwarn com.sun.**",
"-dontwarn org.apache.**",
"-dontwarn scala.**",
//
// Don't note just reduces clutter in the build output. If you make changes
// to the ProGuard configuration, you might want to remove these temporarily to
// help debug the new configuration until it's working correctly.
//
"-dontnote com.sun.**",
"-dontnote org.apache.**",
"-dontnote scala.**"
)
//"-printconfiguration /tmp/proguard"
// Examples of how to filter classes.
ProguardKeys.inputFilter in Proguard := { file =>
file.name match {
case "classes" => None
case "org.apache.karaf.shell.console-2.3.2.jar" => Some("org/apache/karaf/shell/**,org/apache/felix/gogo/commands/**")
case "jline-2.9.jar" => Some("jline/**")
case "org.apache.karaf.jaas.modules-2.3.2.jar" => Some("org/apache/karaf/jaas/modules/**")
case "org.apache.karaf.jaas.config-2.3.2.jar" => Some("org/apache/karaf/jaas/config/**")
case "org.osgi.compendium-4.3.1.jar" => Some("!**")
case _ => Some("!META-INF/**")
}
}
- 1. Sbt plugin für jruby
- 2. sbt nativen Packager-Plugin in SBT Hinzufügen
- 3. Wie bekomme ich Hilfe für bestimmte Plugin sbt?
- 4. Wie kann ein SBT Plugin von einem anderen Plugin abhängen
- 5. Play Idea failing - kein sbt-idea plugin für diese Version von sbt 0.11.3
- 6. sbt proguard Plugin setzen nicht die Klassen
- 7. SBT-Teilprojekte erkennen keine Plugin-Befehle
- 8. Wie der SBT-proguard Plugin in Build.scala Set-up
- 9. SBT-Compiler-Plugin als transitive Abhängigkeit
- 10. Verstehen, wie SBT, Scala, SBT-Idee und Play-Framework zusammenarbeiten
- 11. Wie Log4J Eigenschaften Datei mit sbt und Onejar Plugin hinzufügen?
- 12. Syntaxhervorhebung für * .sbt-Dateien in IntelliJ IDEA
- 13. Wie kann SBT keine Kompilierungswarnungen für generierten Code melden?
- 14. Mavens Schatten-Plugin von Scala und sbt verwenden
- 15. Öffentlicher SBT Plugin Repo scheint kaputt zu sein
- 16. Play Framework sbt-web integration ohne play plugin
- 17. Benutzerdefinierte outputPath für sbt-assembly
- 18. Referenz auf nicht definierte Einstellung in Plugin von Multiprojekt sbt
- 19. HTML-Verkleinerung in sbt-Build für Playframework
- 20. Wie sbt JsonNavigator verwenden
- 21. Geben Hauptklasse für sbt-Resolver
- 22. sbt nicht finden kann, die scripted-sbt Abhängigkeit
- 23. Beschleunigen SBT-Montage
- 24. Wie verfügbar Befehle (= benannte Operationen) in sbt
- 25. wie sbteclipse Plugin in Eclipse
- 26. SBT-Quellen in IDEA
- 27. So führen Sie spezifische Tests mit SBT Jenkins Plugin für ScalaTest test
- 28. Wie cordova Plugin für ionische
- 29. Jautodoc wie Plugin für C++
- 30. Wie gebe ich eine Konfigurationsdatei mit sbt 0.12.2 für sbt test an?
Ich habe seit 2.7 Scala geschrieben und ich immer noch lieber Maven, FWIW zu verwenden. – lmm
Tut das [sbt-assembly plugin] (https://github.com/sbt/sbt-assembly), was Sie wollen? –
Nicht genau, es benennt alle Dateien in jar wie "OrginalClassName-1.0-SNAPSHOT.class" um, so dass der Klassenlader sie nicht findet. –