2017-01-21 23 views
1

У меня есть "Common.scala" в папку проекта:выпуск моментальных снимков в Охо от SBT

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>[email protected]</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 .. I FOLLO ср этой статье: http://szimano.org/automatic-deployments-to-jfrog-oss-and-bintrayjcentermaven-central-via-travis-ci-from-sbt/

Добавлено:

Я установил эту лицензию проблему путем перемещения "лицензии + = (" MIT "гиперссылка (" http://opensource.org/licenses/MIT "))" сразу после «учетных данных + =. ..»

теперь выглядит следующим образом:

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/ реже.

Чтобы задать учетные данные в мандатной OBJ вы можете использовать что-то вроде:

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>/