首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >程序集scala项目导致重复数据消除错误

程序集scala项目导致重复数据消除错误
EN

Stack Overflow用户
提问于 2020-05-24 18:27:30
回答 1查看 343关注 0票数 1

我正在尝试组装我的scala项目,无法摆脱一些重复数据删除错误,以下是有问题的输出:

代码语言:javascript
复制
> [error] 2 errors were encountered during merge [error] stack trace is
> suppressed; run 'last
> ProjectRef(uri("https://hyehezkel@fs-bitbucket.fsd.forescout.com/scm/~hyehezkel/classification_common.git#test_branch"),
> "global") / assembly' for the full output [error]
> (ProjectRef(uri("https://hyehezkel@fs-bitbucket.fsd.forescout.com/scm/~hyehezkel/classification_common.git#test_branch"),
> "global") / assembly) deduplicate: different file contents found in
> the following: [error]
> C:\Users\hyehezkel\AppData\Local\Coursier\cache\v1\https\repo1.maven.org\maven2\io\netty\netty-buffer\4.1.42.Final\netty-buffer-4.1.42.Final.jar:META-INF/io.netty.versions.properties
> [error]
> C:\Users\hyehezkel\AppData\Local\Coursier\cache\v1\https\repo1.maven.org\maven2\io\netty\netty-codec\4.1.42.Final\netty-codec-4.1.42.Final.jar:META-INF/io.netty.versions.properties
> [error]
> C:\Users\hyehezkel\AppData\Local\Coursier\cache\v1\https\repo1.maven.org\maven2\io\netty\netty-common\4.1.42.Final\netty-common-4.1.42.Final.jar:META-INF/io.netty.versions.properties
> [error]
> C:\Users\hyehezkel\AppData\Local\Coursier\cache\v1\https\repo1.maven.org\maven2\io\netty\netty-handler\4.1.42.Final\netty-handler-4.1.42.Final.jar:META-INF/io.netty.versions.properties
> [error]
> C:\Users\hyehezkel\AppData\Local\Coursier\cache\v1\https\repo1.maven.org\maven2\io\netty\netty-resolver\4.1.42.Final\netty-resolver-4.1.42.Final.jar:META-INF/io.netty.versions.properties
> [error]
> C:\Users\hyehezkel\AppData\Local\Coursier\cache\v1\https\repo1.maven.org\maven2\io\netty\netty-transport-native-epoll\4.1.42.Final\netty-transport-native-epoll-4.1.42.Final.jar:META-INF/io.netty.versions.properties
> [error]
> C:\Users\hyehezkel\AppData\Local\Coursier\cache\v1\https\repo1.maven.org\maven2\io\netty\netty-transport-native-unix-common\4.1.42.Final\netty-transport-native-unix-common-4.1.42.Final.jar:META-INF/io.netty.versions.properties
> [error]
> C:\Users\hyehezkel\AppData\Local\Coursier\cache\v1\https\repo1.maven.org\maven2\io\netty\netty-transport\4.1.42.Final\netty-transport-4.1.42.Final.jar:META-INF/io.netty.versions.properties
> [error] deduplicate: different file contents found in the following:
> [error]
> C:\Users\hyehezkel\AppData\Local\Coursier\cache\v1\https\repo1.maven.org\maven2\com\fasterxml\jackson\core\jackson-annotations\2.10.1\jackson-annotations-2.10.1.jar:module-info.class
> [error]
> C:\Users\hyehezkel\AppData\Local\Coursier\cache\v1\https\repo1.maven.org\maven2\com\fasterxml\jackson\core\jackson-core\2.10.1\jackson-core-2.10.1.jar:module-info.class
> [error]
> C:\Users\hyehezkel\AppData\Local\Coursier\cache\v1\https\repo1.maven.org\maven2\com\fasterxml\jackson\core\jackson-databind\2.10.1\jackson-databind-2.10.1.jar:module-info.class
> [error]
> C:\Users\hyehezkel\AppData\Local\Coursier\cache\v1\https\repo1.maven.org\maven2\com\fasterxml\jackson\dataformat\jackson-dataformat-csv\2.10.0\jackson-dataformat-csv-2.10.0.jar:module-info.class

我读了下面的文章,但没能解决这个问题:https://index.scala-lang.org/sbt/sbt-assembly/sbt-assembly/0.14.5?target=_2.12_1.0

这是我的plugins.sbt

代码语言:javascript
复制
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.10")

这是我的build.st

代码语言:javascript
复制
import sbt.Keys.{dependencyOverrides, libraryDependencies, mappings}
import sbtassembly.AssemblyPlugin.assemblySettings._

name := "classification_endpoint_discovery"
version := "0.1"
organization in ThisBuild := "com.forescout"
scalaVersion in ThisBuild := "2.13.1"
updateOptions := updateOptions.value.withCachedResolution(true)
//classpathTypes += "maven-plugin"
exportJars := true
logLevel := Level.Info
logLevel in assembly := Level.Debug
lazy val commonProject = RootProject(uri("https://hyehezkel@fs-bitbucket.fsd.forescout.com/scm/~hyehezkel/classification_common.git#test_branch"))

lazy val global = project
  .in(file("."))
  .settings(settings)
  .enablePlugins(AssemblyPlugin)
//  .disablePlugins(AssemblyPlugin)
  .aggregate(
    commonProject,
    `endpoint-discovery`
  )

lazy val `endpoint-discovery` = project
  .settings(
    name := "endpoint-discovery",
    settings,
    assemblySettings,
    assemblyJarName in assembly := "endpoint-discovery.jar",
    assemblyJarName in assemblyPackageDependency := "endpoint-discovery-dep.jar",
    libraryDependencies += dependencies.postgresql,
    libraryDependencies += "com.lihaoyi" %% "ujson" % "0.7.5",
    libraryDependencies += "com.lihaoyi" %% "requests" % "0.2.0",
    libraryDependencies += dependencies.`deepLearning4j-core`,
    libraryDependencies += dependencies.`deeplearning4j-nn`,
    libraryDependencies += dependencies.`nd4j-native-platform`,
    excludeDependencies += "commons-logging" % "commons-logging"
//    dependencyOverrides += "org.slf4j" % "slf4j-api" % "1.7.5",
//    dependencyOverrides += "org.slf4j" % "slf4j-simple" % "1.7.5",
  )
  .dependsOn(commonProject)
  .enablePlugins(AssemblyPlugin)
lazy val dependencies =
  new {
    val deepLearning4jV         = "1.0.0-beta4"
    val postgresqlV             = "9.1-901.jdbc4"

    val `deepLearning4j-core`    = "org.deeplearning4j"         % "deeplearning4j-core"      % deepLearning4jV
    val `deeplearning4j-nn`      = "org.deeplearning4j"         % "deeplearning4j-nn"        % deepLearning4jV
    val `nd4j-native-platform`   = "org.nd4j"                   % "nd4j-native-platform"     % deepLearning4jV
    val postgresql               = "postgresql"                 % "postgresql"               % postgresqlV
  }

// SETTINGS
lazy val settings =
  commonSettings

lazy val compilerOptions = Seq(
  "-unchecked",
  "-feature",
  "-language:existentials",
  "-language:higherKinds",
  "-language:implicitConversions",
  "-language:postfixOps",
  "-deprecation",
  "-encoding",
  "utf8"
)

lazy val commonSettings = Seq(
  scalacOptions ++= compilerOptions
)

lazy val assemblySettings = Seq(
  assemblyOption in assembly := (assemblyOption in assembly).value.copy(includeScala = false, includeDependency = false),
  assemblyMergeStrategy in assembly := {
    case PathList("META-INF", "io.netty.versions.properties", xs @ _*) => MergeStrategy.singleOrError
    case "module-info.class"                         => MergeStrategy.singleOrError

    case PathList("org", "xmlpull", xs @ _*)         => MergeStrategy.discard
    case PathList("org", "nd4j", xs @ _*)            => MergeStrategy.first
    case PathList("org", "bytedeco", xs @ _*)        => MergeStrategy.first
    case PathList("org.bytedeco", xs @ _*)           => MergeStrategy.first
    case PathList("META-INF", xs @ _*)               => MergeStrategy.discard
    case "XmlPullParser.class"                       => MergeStrategy.discard
    case "Nd4jBase64.class"                          => MergeStrategy.discard
    case "XmlPullParserException.class"              => MergeStrategy.discard
//    case n if n.startsWith("rootdoc.txt") => MergeStrategy.discard
//    case n if n.startsWith("readme.html") => MergeStrategy.discard
//    case n if n.startsWith("readme.txt") => MergeStrategy.discard
    case n if n.startsWith("library.properties") => MergeStrategy.discard
    case n if n.startsWith("license.html") => MergeStrategy.discard
    case n if n.startsWith("about.html") => MergeStrategy.discard
//    case _ => MergeStrategy.first
      case x =>
        val oldStrategy = (assemblyMergeStrategy in assembly).value
        oldStrategy(x)
  }
)

我已经尝试了许多合并策略,但都不起作用,这里我错过了什么?有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2020-05-25 21:21:04

针对META-INF/io.netty.versions.properties

您必须:

case PathList("META-INF","io.netty.versions.properties",xs @ _*) => MergeStrategy.singleOrError

如果有超过1个同名的文件,它就会出错。

对于这些文件instead

  • module-info.class,尝试使用MergeStrategy.first

这些文件只与Java9模块系统相关。通常,您可以直接丢弃它们:

case“MergeStrategy.discard -info.class”=>模块

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61984594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档