Выпускать снимки, чтобы ojo от sbt

У меня есть "Common.scala" в проекте dir:

import sbt.Keys._
import sbt._

import bintray.BintrayKeys._

object Common {

  val commonSettings = Seq(
    organization := "com.github.kondaurovdev",
    scalaVersion := "2.11.8",
    scalacOptions ++= Seq("-unchecked", "-deprecation", "-feature"),
    publishLocal := (),
    parallelExecution := false
  )

  val doNotPublishSettings = Seq(
    publish := {},
    publishLocal := {}
  )

  def getPublishSettings(_version: String) = {

    if (_version.endsWith("-SNAPSHOT")) {
      {
        println("is snapshot!")
        Seq(
          publishTo := Some("Artifactory Realm" at "http://oss.jfrog.org/artifactory/oss-snapshot-local"),
          bintrayReleaseOnPublish := false,
          credentials := List(Path.userHome / ".bintray" / ".artifactory").filter(_.exists).map(Credentials(_))
        )
      }
    } else {
      {
        println("is release")
        Seq(
          bintrayOmitLicense := true,
          bintrayRepository := "maven",
          publishArtifact in Test := false,
          pomExtra :=
            <developers>
              <developer>
                <id>kondaurovdev</id>
                <name>Alexander Kondaurov</name>
                <email>kondaurov.dev@gmail.com</email>
              </developer>
            </developers>
        )
      }
    } ++ Seq(
      licenses += ("MIT", url("http://opensource.org/licenses/MIT"))
    )
  }

  def myProject(name: String, _version: String = "0.1.1-SNAPSHOT", deps: Seq[ModuleID] = Seq(), settings: Seq[Def.SettingsDefinition] = Seq(), path: Option[String] = None): Project = {
    Project(name, file(path.getOrElse(name)))
      .settings(
        commonSettings ++
        getPublishSettings(_version)
      )
      .settings(
        libraryDependencies ++= deps,
        version := _version
      )
      .settings(
        settings: _*
      )
  }

}

И у меня есть таким образом проекты в "build.sbt":

lazy val snippets: Project = {

  Common.myProject("snippets", deps = Seq(
    Deps.specs2,
    Deps.Log.slf4j
  ))

}

Когда я пытаюсь "сниппеты / публиковать", я получаю следующие ошибки:

> snippets/publish
[info] Wrote /Users/alexanderkondaurov/Projects/kondaurov/scala/snippets/target/scala-2.11/snippets_2.11-0.1-SNAPSHOT.pom
[info] :: delivering :: com.github.kondaurovdev#snippets_2.11;0.1-SNAPSHOT :: 0.1-SNAPSHOT :: integration :: Sat Jan 21 14:42:01 MSK 2017
[info]  delivering ivy file to /Users/alexanderkondaurov/Projects/kondaurov/scala/snippets/target/scala-2.11/ivy-0.1-SNAPSHOT.xml
[error] Unable to find credentials for [Artifactory Realm @ oss.jfrog.org].
[trace] Stack trace suppressed: run last snippets/*:bintrayEnsureLicenses for the full output.
[trace] Stack trace suppressed: run last snippets/*:publish for the full output.
[error] (snippets/*:bintrayEnsureLicenses) you must define at least one license for this project. Please choose one or more of
[error]  AFL-3.0, AGPL-V3, APL-1.0, APSL-2.0, Apache-1.0, Apache-1.1, Apache-2.0, Artistic-License-2.0, Attribution, BSD, BSD New, BSD Simplified, BSL-1.0, Bouncy-Castle, CA-TOSL-1.1, CDDL-1.0, CPAL-1.0, CPL-1.0, CPOL-1.02, CUAOFFICE-1.0, Codehaus, Day, Day-Addendum, ECL2, EUDATAGRID, EUPL-1.1, Eclipse-1.0, Eiffel-2.0, Entessa-1.0, Fair, Frameworx-1.0, GPL-2.0, GPL-2.0+CE, GPL-3.0, HSQLDB, Historical, IBMPL-1.0, IPAFont-1.0, ISC, IU-Extreme-1.1.1, JA-SIG, JSON, JTidy, LGPL-2.1, LGPL-3.0, Lucent-1.02, MIT, MPL-2.0, MS-PL, MS-RL, MirOS, Motosoto-0.9.1, Mozilla-1.1, Multics, NASA-1.3, NAUMEN, NOSL-3.0, NTP, Nethack, Nokia-1.0a, OCLC-2.0, OSL-3.0, Openfont-1.1, Opengroup, PHP-3.0, PostgreSQL, Public Domain, Public Domain - SUN, PythonPL, PythonSoftFoundation, QTPL-1.0, RPL-1.5, Real-1.0, RicohPL, SUNPublic-1.0, SimPL-2.0, Sleepycat, Sybase-1.0, TMate, Unlicense, UoI-NCSA, VovidaPL-1.0, W3C, WTFPL, Xnet, ZLIB, ZPL-2.0, wxWindows
[error] (snippets/*:publish) java.io.IOException: Access to URL http://oss.jfrog.org/artifactory/oss-snapshot-local/com/github/kondaurovdev/snippets_2.11/0.1-SNAPSHOT/snippets_2.11-0.1-SNAPSHOT.pom was refused by the server: Unauthorized
[error] Total time: 2 s, completed Jan 21, 2017 2:42:03 PM
> 

Я не понимаю, почему он жалуется на лицензию, я включил лицензию MIT.. Я следовал за этой статьей: http://szimano.org/automatic-deployments-to-jfrog-oss-and-bintrayjcentermaven-central-via-travis-ci-from-sbt/ с помощью-Travis-CI-из-SBT /

ДОБАВЛЕНО:

Я исправил эту проблему, переместив "licenses + = (" MIT ", url (" http://opensource.org/licenses/MIT "))" сразу после "credentials += ..."

теперь это выглядит так:

Seq(
  publishTo := Some("Artifactory Realm" at "https://oss.jfrog.org/artifactory/oss-snapshot-local"),
  bintrayReleaseOnPublish := false,
  credentials := List(Path.userHome / ".bintray" / ".artifactory").filter(_.exists()).map(Credentials(_)),
  licenses += ("MIT", url("http://opensource.org/licenses/MIT"))
)

Это странно.. Файл учетных данных выглядит так:

realm = Artifactory Realm
host = oss.jfrog.org
user = *********
password = ***********

И я понял, что для того, чтобы загрузить пакет моментальных снимков, его нужно подтвердить, обратившись в службу поддержки. Они создадут папку для вашего пакета. Эту процедуру нужно выполнить для каждой посылки, вы, ребята, шутите?

У меня есть аккаунт здесь " https://oss.sonatype.org/ ". У меня есть пространство имен, и я могу загрузить столько пакетов, сколько мне нужно, я ожидал того же поведения в OJO. Я не отправляю запрос в службу поддержки каждый раз, когда я получаю новый пакет

1 ответ

Установка учетных данных в ~/.sbt/ это путь вперед. Учетные данные могут быть в build.sbt, однако имя пользователя, пароль оставляются в незашифрованном виде, а также IP-адрес сервера хранилища.

Чтобы установить учетные данные через файл конфигурации, вы можете использовать:

credentials += Credentials(Path.userHome / ".sbt" / ".credentials")

Это забирает учетные данные в файле с именем .credentials который хранится в моем ~/.sbt/ реж.

Чтобы установить учетные данные в объекте учетных данных, вы можете использовать что-то вроде:

credentials += Credentials("Artifactory Realm", "http://<ip>:<port>/artifactory/<repo-key>", "<username>", "<password>")

Также важно убедиться, что publishTo был установлен с соответствующим распознавателем. Примером которого является:

publishTo := Some("Artifactory Realm" at "http://<ip>:<port>/artifactory/<repo-key>

Настроить прокси. Следующее может быть добавлено в файл с именем repositories Хранится в ~/.sbt/, Пример конфигурации может выглядеть так:

[repositories]
local
my-ivy-proxy-releases: http://<host>:<port>/artifactory/<repo-key>/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
my-maven-proxy-releases: http://<host>:<port>/artifactory/<repo-key>/
Другие вопросы по тегам