2015-12-02 26 views
2

我正在嘗試將sbt-native-packager插件添加到我的構建中。由於一些原因,我不想我的生成依賴於默認SBT庫,我已經禁止訪問他們的網絡上,並以下列方式增加了一個解析器我<project_home>/project/plugins.sbtSBT插件不使用自定義分辨器

resolvers += "local-repo-plugins" at "file:///" + baseDirectory.value + "/libs/repo/" 
resolvers += Resolver.url("my-ivy-proxy-plugins", url("http://fullURLForRepo/"))(Patterns("[organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]")) 

addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "0.7.4") 

我可以證實插件是在我的常春藤代理託管,但是這甚至不是問題,因爲SBT仍試圖去默認回購:

[info] Resolving com.typesafe.sbt#sbt-native-packager;0.7.4 ... 
[error] Server access Error: Connection timed out url=https://repo.typesafe.com/typesafe/ivy-releases/com.typesafe.sbt/sbt-native-packager/scala_2.10/sbt_0.13/0.7.4/ivys/ivy.xml 
[error] Server access Error: Connection timed out url=https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.typesafe.sbt/sbt-native-packager/scala_2.10/sbt_0.13/0.7.4/ivys/ivy.xml 
[error] Server access Error: Connection timed out url=https://repo1.maven.org/maven2/com/typesafe/sbt/sbt-native-packager_2.10_0.13/0.7.4/sbt-native-packager-0.7.4.pom 

此外,這非常相同的自定義解析工作得很好(連同在解決庫依賴性問題時,我的<project_home>/build.sbt上有其他一些文件,包括基於本地文件系統的文件系統)。

雖然我明白,爲什麼在我的項目建設中使用的解析器是不是在我<project_home>/project/plugins.sbt使用相同的,我有一個關於我剛纔所描述的問題,幾個問題:

  1. 這是定義解析器的正確方法插件嗎?用這種語法將它們添加到<project_home>/project/plugins.sbt
  2. 如果問題1)的答案是肯定的:在定義這些解析器時有什麼辦法避免冗餘?例如我已經定義恰好<project_home>/build.sbt
  3. 而最重要的非常相同的:爲什麼不使用我的常春藤代理SBT的身材,在分解規定,檢索SBT-本機打包插件?

回答

2
  1. 是的,這是定義爲解析器插件

  2. 這實際上是相當棘手的一個正確的方法:你要分享和插件之間設置建立構建。從sbt的角度來看,這些是「獨立」項目。有些解決方案使用項目引用來訪問構建版本的插件構建設置,但它們是quitetricky。如果這是一個您永遠無法訪問默認存儲庫的公司環境,那麼使用自定義sbt.boot.properties可能會更容易。你可以從default file開始0.13.x 更改sbt.boot.properties應該從Server access errors提供給你。

  3. 沒有什麼你提供這表明該插件未能從您的代理解決了日誌,只知道它TIMEDOUT試圖達到官方倉庫。使用默認sbt.boot.properties,SBT將嘗試在解析器被定義爲解決文物:

    local 
    typesafe-ivy-releases: https://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext] 
    maven-central 
    sonatype-snapshots: https://oss.sonatype.org/content/repositories/snapshots 
    

    然後在<project_home>/project/目錄中的所有文件.sbt發現的任何解析器。據我所知,sbt文件按字母順序進行評估,並且解析器按它們在每個文件中出現的順序添加。

+0

我接受這個答案,因爲即使它沒有直接提供解決我的問題的方法,但它正確地指出了我的問題本身的問題,因爲粘貼的日誌不完整,也沒有說明我正在解釋的問題。這本身就是我最初忽略的東西的一個很好的暗示。此外,這個答案中的信息和鏈接是非常豐富和有益的(特別是在第二點)。謝謝! – djsecilla

+0

對不起,我不能有更多的幫助,我希望你解決你的問題。請回復併發佈一個更好的答案,一旦你做了:)(我認爲你可以改變接受的答案) – Jean

0

我覺得你們全搞錯了,應該是這樣的:

MY_PROJECT /項目/插件。SBT應該有: addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "0.7.4")

MY_PROJECT /項目/工程/ build.sbt *應該有: resolvers += ...

他們是2個不同的生成定義...

+0

這是不正確的。 SBT是遞歸的,所以構建本身就是一個解析器可定製的項目。 –

+0

我在回答之前對其進行了測試,它是唯一適用於我的方法。 – lisak

+0

我不是說你提到的不起作用。但你也暗示'resolvers'不應該在'plugins.sbt',它應該是基本相同的(把它放在'項目/工程/ build.sbt'和下'項目/ plugins.sbt')。 –