저는 scala와 sbt 세계에 대한 새로운 기능을 가지고 있으며, maven을 사용하지 않고 sbt로 모든 새 프로젝트를 관리하려고합니다. 하지만 지금은 내가 더 이상 몰라요 지점에있어 내가 mavnen 그늘 플러그인에 대한 sbt 대응을 찾을 수 없기 때문에. 필자가 발견 한 것은 모든 의존성을 포함하는 플러그인 이었지만, 필자가 필요로하는 것은 아닙니다. 그럼 누군가가 항아리에 특정 종속성을 포함하는 플러그인을 알고 있습니까?SBT 용 플러그인 maven-shade
12
A
답변
5
SBT 조립 0.14.0이 shading 지원을 추가 여기
플러그인을 사용하려면 내project/plugins.sbt
입니다 .
sbt- 어셈블리는 프로젝트 또는 라이브러리 종속성의 클래스를 음영 처리 할 수 있습니다. Jar Jar Links가 지원하는 바이트 코드 변환 (ASM 사용)은 이름이 바뀐 클래스에 대한 참조를 변경하는 데 사용됩니다.
assemblyShadeRules in assembly := Seq(
ShadeRule.rename("org.apache.commons.io.**" -> "[email protected]").inAll
)
-1
나는 크로스 버전 접미사 오류에 완전히 몰두하고 sbt- 어셈블리에서 중복을 제거하는 것과 비슷한 것을 찾고 있습니다.
나는 플러그인 "onejar"발견 할 수 있지만 작동하는지 알려주세요, 전체 년 동안 업데이트되지 않은 : 나는 Proguard와 함께 성공을 거두었습니다 https://github.com/sbt/sbt-onejar
0
가 sbt-proguard 플러그인을 사용하여. 설정하는 데는 시간이 걸렸지 만, Proguard 기능을 사용하려면 일부 기능을 해제해야했지만 결국에는 내가 원하는 것을 얻었습니다. "java -jar"로 실행할 수있는 단일 항아리, scala가 설치되지 않은 시스템에서도 마찬가지입니다. 그것을 구성하는
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")
그리고 여기 내 build.sbt 일부 조각을 다음과 같습니다 :
이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. jruby 용 Sbt 플러그인
- 2. 로컬 머신 용 SBT 플러그인
- 3. SBT. 플레이 SBT-플러그인
- 4. sbt 용 GenJavaDoc 플러그인 사용 방법은 무엇입니까?
- 5. 플러그인을 추가하는 SBT 플러그인
- 6. 모든 SBT 플러그인
- 7. akka는-SBT-플러그인 build.sbt
- 8. 스핑크스 용 SBT 플러그인이 있습니까?
- 9. sbt 플러그인 생성시 어떻게 시작해야합니까?
- 10. sbt AutoPlugin에서 타사 플러그인 설정하기
- 11. 사용자 정의 sbt 플러그인 사용
- 12. Sbt 플러그인 바이너리 비 호환성
- 13. 인 IntelliJ의 SBT 플러그인/Build.scala
- 14. 일반적인 sbt 프로젝트에서 sbt 플러그인 소스 항아리를 다운로드하는 방법은 무엇입니까?
- 15. AngularJS 용 SBT 프로젝트 설정
- 16. sbt 용 IPFS 해결 프로그램
- 17. 프로젝트 용 Sbt 빌드 배포
- 18. btray에 대한 Sbt 플러그인 게시 및 해결, 다른 경로 (sbt-bintray 플러그인)
- 19. Sbt 플러그인 프로젝트/build.sbt에 대한 종속성 추가
- 20. SBT가 sbt-heroku 플러그인 종속성을 해결하지 않음
- 21. SBT/플러그인 설정을 덮어 쓰는 좋은 방법
- 22. SBT 플러그인 : 결과 jar에 리소스를 추가 하시겠습니까?
- 23. IntelliJ IDEA 14에서 sbt 플러그인 사용
- 24. sbt 플러그인 종속성 중 하나의 파일
- 25. SBT
- 26. Playframework 용 sbt 빌드의 HTML 축소
- 27. Java 실행 파일 용 SBT 프로젝트
- 28. sbt 용 AspectJ 플러그인이 작동하지 않습니다.
- 29. [SBT]
- 30. Redmine 용 플러그인 마이그레이션
내가 2.7 이후 스칼라를 쓰고있다 그리고 나는 아직도 메이븐, FWIW를 사용하는 것을 선호합니다. – lmm
[sbt-assembly plugin] (https://github.com/sbt/sbt-assembly)에서 원하는 작업을 수행 할 수 있습니까? –
정확하지는 않습니다. "OrginalClassName-1.0-SNAPSHOT.class"와 같이 jar 파일의 모든 파일의 이름이 바뀌므로 클래스 로더가 해당 파일을 찾지 못합니다. –