2020-01-12 22:20:41 +01:00
|
|
|
package sbt
|
2016-09-01 02:14:14 +02:00
|
|
|
|
2020-01-12 22:20:41 +01:00
|
|
|
import java.nio.charset.StandardCharsets.UTF_8
|
|
|
|
|
import java.nio.file.{ FileAlreadyExistsException, Files }
|
|
|
|
|
|
|
|
|
|
import org.apache.ivy.core.module.id.ModuleRevisionId
|
|
|
|
|
import sbt.Keys._
|
|
|
|
|
import sbt.internal.librarymanagement.{ IvySbt, IvyXml }
|
2017-05-03 16:52:36 +02:00
|
|
|
|
2016-09-01 02:14:14 +02:00
|
|
|
/** This local plugin provides ways of publishing just the binary jar. */
|
|
|
|
|
object PublishBinPlugin extends AutoPlugin {
|
2017-04-21 09:14:31 +02:00
|
|
|
override def trigger = allRequirements
|
2016-09-01 02:14:14 +02:00
|
|
|
|
|
|
|
|
object autoImport {
|
2017-04-21 09:14:31 +02:00
|
|
|
val publishLocalBin = taskKey[Unit]("")
|
2016-09-01 02:14:14 +02:00
|
|
|
val publishLocalBinConfig = taskKey[PublishConfiguration]("")
|
|
|
|
|
}
|
|
|
|
|
import autoImport._
|
|
|
|
|
|
2020-01-12 22:20:41 +01:00
|
|
|
private val dummyDoc = taskKey[File]("").withRank(Int.MaxValue)
|
|
|
|
|
override val globalSettings = Seq(publishLocalBin := (()))
|
2016-11-24 15:15:38 +01:00
|
|
|
|
2020-01-12 22:20:41 +01:00
|
|
|
override val projectSettings: Seq[Def.Setting[_]] = Def settings (
|
2020-01-08 15:41:29 +01:00
|
|
|
publishLocalBin := Classpaths.publishTask(publishLocalBinConfig).value,
|
2020-01-12 22:20:41 +01:00
|
|
|
publishLocalBinConfig := Classpaths.publishConfig(
|
|
|
|
|
false, // publishMavenStyle.value,
|
|
|
|
|
Classpaths.deliverPattern(crossTarget.value),
|
|
|
|
|
if (isSnapshot.value) "integration" else "release",
|
|
|
|
|
ivyConfigurations.value.map(c => ConfigRef(c.name)).toVector,
|
2021-05-03 05:25:23 +02:00
|
|
|
(publishLocalBin / packagedArtifacts).value.toVector,
|
|
|
|
|
(publishLocalBin / checksums).value.toVector,
|
2020-01-12 22:20:41 +01:00
|
|
|
logging = ivyLoggingLevel.value,
|
|
|
|
|
overwrite = isSnapshot.value
|
|
|
|
|
),
|
|
|
|
|
publishLocalBinConfig := publishLocalBinConfig
|
|
|
|
|
.dependsOn(
|
|
|
|
|
// Copied from sbt.internal.
|
|
|
|
|
Def.taskDyn {
|
|
|
|
|
val doGen = useCoursier.value
|
|
|
|
|
if (doGen)
|
|
|
|
|
Def.task {
|
|
|
|
|
val currentProject = {
|
|
|
|
|
val proj = csrProject.value
|
|
|
|
|
val publications = csrPublications.value
|
|
|
|
|
proj.withPublications(publications)
|
|
|
|
|
}
|
|
|
|
|
IvyXml.writeFiles(currentProject, None, ivySbt.value, streams.value.log)
|
|
|
|
|
} else
|
|
|
|
|
Def.task(())
|
|
|
|
|
}
|
2017-08-10 17:23:15 +02:00
|
|
|
)
|
2020-01-12 22:20:41 +01:00
|
|
|
.value,
|
|
|
|
|
dummyDoc := {
|
|
|
|
|
val dummyFile = streams.value.cacheDirectory / "doc.jar"
|
|
|
|
|
try {
|
|
|
|
|
Files.createDirectories(dummyFile.toPath.getParent)
|
|
|
|
|
Files.createFile(dummyFile.toPath)
|
|
|
|
|
} catch { case _: FileAlreadyExistsException => }
|
|
|
|
|
dummyFile
|
2017-07-20 04:00:42 +02:00
|
|
|
},
|
2020-01-12 22:20:41 +01:00
|
|
|
dummyDoc / packagedArtifact := (Compile / packageDoc / artifact).value -> dummyDoc.value,
|
2021-05-03 05:25:23 +02:00
|
|
|
publishLocalBin / packagedArtifacts :=
|
2020-01-12 22:20:41 +01:00
|
|
|
Classpaths
|
2021-05-03 05:25:23 +02:00
|
|
|
.packaged(Seq(Compile / packageBin, Compile / packageSrc, makePom, dummyDoc))
|
2020-01-12 22:20:41 +01:00
|
|
|
.value
|
2016-09-01 02:14:14 +02:00
|
|
|
)
|
|
|
|
|
}
|