Как избежать написания pom при запуске docker: publishLocal? - PullRequest
0 голосов
/ 25 июня 2018

У меня есть два подпроекта на build.sbt, и один зависит от другого (cli зависит от ядра и агрегирует его). Ядро будет опубликовано в виде библиотеки, а cli будет опубликовано в виде образа докера. Проблема в том, что когда я делаю cli / docker: publishLocal, я не могу избежать написания pom ... Как этого избежать? Это текущий файл build.sbt:

import sbt.Keys._
import sbt._

val scalaBinaryVersionNumber = "2.12"
val scalaVersionNumber = s"$scalaBinaryVersionNumber.4"

resolvers += Resolver.bintrayIvyRepo("sbt", "sbt-plugin-releases")

lazy val aggregatedProjects: Seq[ProjectReference] = Seq(core, cli)

lazy val testDependencies = Dependencies.specs2.map(_ % Test)

lazy val root = project
  .in(file("."))
  .settings(name := "root")
  .settings(inThisBuild(List(
    //Credentials for sonatype
    credentials += Credentials(
      "Sonatype Nexus Repository Manager",
      "oss.sonatype.org",
      sys.env.getOrElse("SONATYPE_USER", "username"),
      sys.env.getOrElse("SONATYPE_PASSWORD", "password")),
    scalaVersion := scalaVersionNumber,
    version := "0.1.0-SNAPSHOT",
    organization := "com.test",
    scalacOptions ++= Common.compilerFlags,
    scalacOptions.in(Test) ++= Seq("-Yrangepos"),
    scalacOptions.in(Compile, console) --= Seq("-Ywarn-unused:imports", "-Xfatal-warnings"))))
  .aggregate(aggregatedProjects: _*)
  .settings(publish := {}, publishLocal := {}, publishArtifact := false)

lazy val core = project
  .in(file("core"))
  .settings(name := "core")
  .settings(
    // App Dependencies
    libraryDependencies ++= Seq(
      Dependencies.caseApp,
      Dependencies.betterFiles,
      Dependencies.jodaTime,
      Dependencies.fansi,
      Dependencies.scalajHttp,
      Dependencies.cats) ++
      Dependencies.circe ++
      Dependencies.jackson ++
      Dependencies.log4s
    // Test Dependencies
    libraryDependencies ++= testDependencies)
  .settings(
    // Sonatype repository settings
    publishMavenStyle := true,
    publishArtifact.in(Test) := false,
    //publishArtifact.in(makePom.in(Docker)) := false,
    publish.in(Docker) := {},
    publishLocal.in(Docker) := {},
    pomIncludeRepository := { _ =>
      false
    },
    publishTo := sonatypePublishTo.value)
  .settings(pomExtra := <scm>
    <url>https://github.com/test</url>
    <connection>scm:git:git@github.com:test.git</connection>
    <developerConnection>scm:git:https://github.com/test.git</developerConnection>
  </scm>)

lazy val cli = project
  .in(file("cli"))
  .enablePlugins(JavaAppPackaging)
  .enablePlugins(DockerPlugin)
  .settings(name := "cli")
  .settings(Common.dockerSettings: _*)
  .settings(Common.genericSettings: _*)
  .settings(
    //publish := publish.in(Docker).value,
    //publishLocal := publishLocal.in(Docker).value,
    publishArtifact := false)
  .settings(libraryDependencies ++= testDependencies)
  .dependsOn(core)
  .aggregate(core)

// Scapegoat
scalaVersion in ThisBuild := scalaVersionNumber
scalaBinaryVersion in ThisBuild := scalaBinaryVersionNumber
scapegoatDisabledInspections in ThisBuild := Seq()
scapegoatVersion in ThisBuild := "1.3.4"

Как видите, я уже пытался добавить "publishArtifact.in (makePom.in (Docker)): = false" в настройки ядра, но это не записывает pom, когда я выполняю core / publishLocal ... Я просто хочу избежать написания пом когда я делаю cli / docker: publishLocal.

...