Sono incredibilmente nuovo al mondo scala e sbt e sto cercando di gestire tutti i miei nuovi progetti con sbt piuttosto che usare Maven. Ma ora sono su un punto in cui non lo so più perché non riesco a trovare nessuna controparte sbt per il plugin mavnen-shade. Quello che ho trovato erano solo plugin per includere tutte le dipendenze, ma non è quello che mi serve. Quindi qualcuno conosce un plugin per includere certe dipendenze nel barattolo?maven-shade come plug-in per SBT
risposta
SBT-assemblaggio 0.14.0 aggiunge il supporto shading .
sbt-assembly può schermare le classi dai progetti o dalle dipendenze della libreria. Sostenuto da Jar Jar Links, la trasformazione bytecode (tramite ASM) viene utilizzata per modificare i riferimenti alle classi rinominate.
assemblyShadeRules in assembly := Seq(
ShadeRule.rename("org.apache.commons.io.**" -> "[email protected]").inAll
)
Sto cercando una cosa simile perché sono completamente stufo degli errori di suffisso cross-version e degli errori di deduplicazione da sbt-assembly.
sono riuscito a trovare "onejar" plug-in, ma non è stato aggiornato per un anno intero, fatemi sapere se funziona: https://github.com/sbt/sbt-onejar
Ho avuto successo con Proguard utilizzando il plugin sbt-proguard. Mi ci è voluto un po 'per installarlo e ho dovuto disattivare alcune delle funzionalità di Proguard per farlo funzionare, ma alla fine ho ottenuto quello che volevo: un singolo jar che potevo eseguire con "java -jar", anche su un sistema senza scala installato.
Ecco il mio project/plugins.sbt
per abilitare il plugin:
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")
Ed ecco alcuni frammenti dal mio build.sbt per configurarlo:
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. Plugin Sbt per jruby
- 2. Come testare i plugin SBT
- 3. Plugin del compilatore SBT come dipendenza transitoria
- 4. Play Idea fallita - nessun plugin sbt-idea per questa versione di sbt 0.11.3
- 5. Come set-up il plugin sbt-Proguard in Build.scala
- 6. Lein console (come sbt)
- 7. Come fare a sbt compilare un plugin da un repository git, usando https per controllarlo?
- 8. Come eseguire test specifici utilizzando SBT Jenkins Plugin per il test ScalaTest
- 9. Dipendenza non risolta su sbt-android-plugin 0.6.0-SNAPSHOT?
- 10. Capire come funzionano SBT, Scala, Idea SBT e Quadro di gioco
- 11. Come impostare il progetto predefinito per SBT
- 12. Come dire SBT per risolvere manufatti gestiti
- 13. Come posso eseguire test Android con sbt?
- 14. Convertire un'applicazione SBT Scala esistente per giocare
- 15. SBT come eseguire InputTask
- 16. C'è un modo per ottenere tutte le dipendenze del progetto tramite il plugin sbt?
- 17. Minificazione HTML in build sbt per Playframework
- 18. (per sun.security.util) di build SBT
- 19. Output personalizzatoPath per sbt-assembly
- 20. Impostazione target JVM in SBT
- 21. sbt non riesce a trovare la dipendenza scripted-sbt
- 22. libraryDependencies per com.eed3si9n # SBT-assemblaggio; 0.13.0: non si trovano
- 23. errore: eof previsto ?! Come usare i plugin di idea ed eclipse insieme a sbt?
- 24. Come un plugin SBT può dipendere da un altro plug-in
- 25. Come posso cambiare la versione di Scala utilizzata da Play, SBT e i suoi plugin?
- 26. Fonti SBT in IDEA
- 27. per iniziare con SBT per ascensore
- 28. Come aggiungere il file delle proprietà log4J con il plugin sbt e unjar?
- 29. Sbt 0.12.4+ richiesto per l'importazione del progetto
- 30. Test SBT/Scala e Integrazione
ho scritto Scala dal 2.7 e io ancora preferisco usare Maven, FWIW. – lmm
Il [montaggio sbt-assembly] (https://github.com/sbt/sbt-assembly) fa ciò che vuoi? –
Non esattamente, rinomina tutti i file in jar come "OrginalClassName-1.0-SNAPSHOT.class", quindi il programma di caricamento classi non li trova. –