代码之家  ›  专栏  ›  技术社区  ›  Powers

Maven JAR文件只包括HTML文件,不包括Scala类

  •  1
  • Powers  · 技术社区  · 8 年前

    我跟着 this guide

    sbt publishSigned sbt sonatypeRelease 对于spark fast tests 0.11.0发行版,正确构建了JAR文件。 See here sbt-sonatype 插件。

    出于某种原因,当我发布0.12.0版本时,Maven JAR文件只包含HTML文件和图像。例如,下载的JAR文件包含此文件 com/github/mrpowers/spark/fast/tests/DatasetComparer.html ,但不包括 DatasetComparer.class .

    target/scala-2.11/spark-fast-tests_2.11-2.3.0_0.12.0.jar 文件还仅包括HTML文件(或 sbt出版 sbt释放 必须已生成此JAR文件)。

    当我跑的时候 sbt package ,生成的JAR文件包括Scala类,如 com/github/mrpowers/spark/fast/tests/DatasetComparer.class ,正如所料。

    spark fast tests是一个开源项目,下面是 build.sbt file .

    1 回复  |  直到 8 年前
        1
  •  1
  •   Mario Galic    8 年前

    快速火花试验分析 build.sbt 我将提出以下建议:

    1. sbt-release plugins.sbt 要启用发布流程定制,请执行以下操作:

      addSbtPlugin("com.github.gseitz"  % "sbt-release"   % "1.0.8")
      addSbtPlugin("org.xerial.sbt"     % "sbt-sonatype"  % "2.0")
      addSbtPlugin("com.jsuereth"       % "sbt-pgp"       % "1.1.0")
      
    2. version.sbt 在项目根目录下移动 version 放线 :

      version in ThisBuild := "0.12.1-SNAPSHOT"
      
    3. sonatype.sbt 在项目根目录下,将以下设置移出 :

      homepage := Some(url("https://github.com/mrpowers/spark-fast-tests/"))
      scmInfo := Some(
          ScmInfo(
          url("https://github.com/mrpowers/spark-fast-tests/"),
          "git@github.com:mrpowers/spark-fast-tests.git"
          )
      )
      developers := List(
          Developer(
          "mrpowers",
          "Matthew Powers",
          "matthewkevinpowers@gmail.com",
          url("https://github.com/mrpowers/spark-fast-tests/")
          )
      )
      licenses += ("MIT", url("http://opensource.org/licenses/MIT"))
      publishMavenStyle := true
      
    4. 将以下版本设置添加到 build.sbt :

      import sbtrelease.ReleaseStateTransformations._
      
      publishTo := Some(
        if (isSnapshot.value) { Opts.resolver.sonatypeSnapshots }
        else { Opts.resolver.sonatypeReleases }
      )
      
      releasePublishArtifactsAction := PgpKeys.publishSigned.value
      releaseProcess := Seq[ReleaseStep](
        checkSnapshotDependencies,
        inquireVersions,
        runClean,
        runTest,
        setReleaseVersion,
        commitReleaseVersion,
        tagRelease,
        publishArtifacts,
        setNextVersion,
        commitNextVersion,
        releaseStepCommand("sonatypeReleaseAll"),
        pushChanges
      )
      
    5. 释放到Maven Central,并使用 sbt release

    对于一个工作示例,请查看的构建配置 sbt-sonatype

        2
  •  1
  •   Nightscape    6 年前

    参加聚会有点晚,但我和他有同样的问题 spark-testing-base 它源于您修改 artifactName

    artifactName := { (sv: ScalaVersion, module: ModuleID, artifact: Artifact) =>
      artifact.name + "-" + module.revision + "." + artifact.extension
    }
    

    这可能是从 official SBT docs 请注意,这些文档在代码下面有以下提示:

    我的解决方案

      artifactName := { (sv: ScalaVersion, module: ModuleID, artifact: Artifact) =>
        Artifact.artifactName(sv, module, artifact).replaceAll(s"-${module.revision}", s"-${sparkVersion.value}${module.revision}")
      }
    

    这应该确保保持分类器(以及任何可能进入 工件名 )并解决了JAR文件包含文档而不是类文件的问题。

    推荐文章