2016-04-07 13 views
1

Ich muss eine Abhängigkeit von Git in meinem SBT Build enthalten. Ich habe einige andere Beispiele folgte ich auf Stackoverflow gefunden habe und so weit gekommen:Zugreifen auf Klassen aus Nicht-SBT-Abhängigkeiten über Git in SBT

lazy val commonSettings = Seq(
    version := "0.1.0", 
    scalaVersion := "2.10.5" 
) 

lazy val elastic = ProjectRef(uri("git://github.com/elastic/elasticsearch-hadoop.git"), "elasticsearch-hadoop") 

// Library dependencies 
lazy val indexer = (project in file(".")) 
    .settings(commonSettings: _*) 
    .dependsOn(elastic) 
    .settings(
    projectDependencies := { 
    Seq(
     (projectID in elastic).value. 
     exclude("commons-beanutils", "commons-beanutils-core"). 
     exclude("commons-collections", "commons-collections"). 
     exclude("commons-logging", "commons-logging"). 
     exclude("com.esotericsoftware.minlog", "minlog"). 
     exclude("org.apache.hadoop", "hadoop-yarn-common-2.2.0"). 
     exclude("org.apache.spark", "spark-network-common_2.10"). 
     exclude("org.apache.spark", "spark-sql_2.10")) 
    }) 
    .settings(
    libraryDependencies ++=Seq(
    "org.apache.spark" %% "spark-core" % "1.6.1" % "provided", 
    "org.apache.spark" %% "spark-sql" % "1.6.1" % "provided" 
)) 

Wenn die Montage läuft ich die folgende Fehlermeldung erhalten:

[error] /Users/nandanrao/Documents/Relink/indexer/indexer.scala:4: object elasticsearch is not a member of package org 
[error] import org.elasticsearch.spark.sql._ 

In den anderen Beispielen fand ich, das ist das Muster, dem ich folge, glaube ich, dass die Abhängigkeiten auch SBT-Projekte waren. Die elasticsearch-hadoop-Bibliothek ist ein Java-Projekt, das mit gradle erstellt wurde, in das ein Scala-Projekt eingebettet ist, der Spark-Teil, und eindeutig ist das Ganze nicht mit SBT aufgebaut.

Also ich bin mir nicht sicher, ob ich das Projekt sogar importiert habe, obwohl ich vielleicht habe, und ich bin auch nicht sicher, ob diese Klassenausschlüsse funktionieren. Ich hoffe, dass jemand etwas Licht werfen kann?

Antwort

1

AFAIK, dies ist nicht erlaubt: SBT kann nur Abhängigkeiten über Git importieren, die selbst mit SBT erstellt werden. Sie können publish it to your local repository und davon abhängig wie gewohnt libraryDependencies verwenden. Das einzige Problem ist, dass, wenn Sie Änderungen in der Abhängigkeit vornehmen, Sie es erneut veröffentlichen müssen.

Verwandte Themen