我跟着this guide在Maven中发布了一个Scala / SBT JAR文件。
我为{-1}}和sbt publishSigned
运行了spark-fast-tests 0.11.0版本,并正确构建了JAR文件。 See here。这些命令来自sbt-sonatype插件。
出于某种原因,当我执行0.12.0版本时,Maven JAR文件仅包含HTML文件和图像。例如,下载的JAR文件包含此文件sbt sonatypeRelease
,但不包含com/github/mrpowers/spark/fast/tests/DatasetComparer.html
。
DatasetComparer.class
文件也只包含HTML文件(target/scala-2.11/spark-fast-tests_2.11-2.3.0_0.12.0.jar
或sbt publishSigned
必须生成此JAR文件。)
当我运行sbt sonatypeRelease
时,生成的JAR文件会按预期包含像sbt package
这样的Scala类。
spark-fast-tests是一个开源项目,这里是build.sbt file。
如何将我的项目类包含在上传到Maven的JAR文件中?关于如何更好地调试这个的任何提示/技巧?
答案 0 :(得分:1)
分析spark-fast-tests for i in `seq 1 22`; do python make_annot.py --gene-set-file CELL_TYPEGenes.GeneSet --bimfile ../../1000G_EUR_Phase3_plink/1000G.EUR.QC.${i}.bim --annot-file CELL_TYPE.${i}.annot.gz;done
我会提出以下建议:
将sbt-release
添加到build.sbt
以启用发布流程自定义:
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")
并将version.sbt
设置移出version
:
build.sbt
在项目根目录下创建version in ThisBuild := "0.12.1-SNAPSHOT"
并将以下设置移出sonatype.sbt
:
build.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
:
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
)
对于一个工作示例,请查看sbt-sonatype
本身的构建配置。
答案 1 :(得分:1)
聚会晚了一点,但是我对spark-testing-base
也有同样的问题。
它源于您修改artifactName
的方式:
artifactName := { (sv: ScalaVersion, module: ModuleID, artifact: Artifact) =>
artifact.name + "-" + module.revision + "." + artifact.extension
}
,可能是从official SBT docs复制而来的。 请注意,尽管如此,文档在代码下方仍具有以下提示:
(请注意,实际上,您很少希望删除分类器。)
我对spark-testing-base
的解决方案如下:
artifactName := { (sv: ScalaVersion, module: ModuleID, artifact: Artifact) =>
Artifact.artifactName(sv, module, artifact).replaceAll(s"-${module.revision}", s"-${sparkVersion.value}${module.revision}")
}
这应该确保保留分类器(以及artifactName
中可能有的其他附加内容),并解决包含文档而不是类文件的JAR文件的问题。