2016-05-11 5 views
0

Ich bin ein Java/Maven/Scala Noob derzeit lernen Maven. Das sieht nach einer dup von How to know which artifact to get aus, ist aber nicht, denke ich. ich eine bestimmte Abhängigkeit/Plugin wie der scala Compiler erhalten Angenommen will, gehe ich auf die Maven RepoWie Artefakte sinnvoll zu unterscheiden, wenn sie praktisch identisch aussehen

http://mvnrepository.com/open-source/scala-compilers

und ich sehe zwei Links beide markierten scala-Compiler. Klicken Sie auf sie und ich sehe

http://mvnrepository.com/artifact/org.scala-lang/scala-reflect

und

http://mvnrepository.com/artifact/org.scala-lang/scala-compiler

Sie sind beide als scala Compiler markiert, aber man sagt reflektieren. Also, sind sie beide Compiler, oder was? Vermutlich ist der Compiler das, was er sagt, aber was ist reflektiert? Warum ist es unter Compilern?

Am wichtigsten, und das ist, was meine Frage wirklich ist, nicht scala per se, ist dies mein Missverständnis, wie der Hauptmaven repo Etiketten Dinge, oder haben sie einen Fehler gemacht?


bearbeiten Rafael Saraiva: nützlich & akzeptiert, danke.

Alextsc: Wird lesen, ta. Scala scheint sich im letzten Jahr ernsthaft zu entwickeln!

Mifeet: Wirklich? Sehr interessant, wird lesen, danke.

+0

scala-reflektieren ist die Reflexion Bibliothek. Es ist mit Compilern verbunden, da es eine Kompilierungsreflexion gibt (d.h. Codegenerierung während der Kompilierung). Sie finden eine [Einführung darüber hier] (http://docs.scala-lang.org/overviews/reflection/overview.html). – alextsc

+0

Ja, es ist verwirrend, wie sie die Artefakte in das Repository hochgeladen haben. Übrigens, ich glaube nicht, dass du eines dieser Artefakte in deinem Pom haben musst. Überprüfen Sie [diese Antwort] (http: // stackoverflow.com/a/37048514/2032064) für ein Beispiel eines minimalen Pom für Scala. – Mifeet

Antwort

1

Obwohl sie beide als scala-Compiler bezeichnet werden und die gleiche groupId org.scala-lang haben, müssen Sie immer auf die artifactId achten, die eine Bibliothek/ein Paket eindeutig identifiziert (was ein Artefakt in maven ist).

genauer zu sein, eine Maven Abhängigkeit von drei Dinge gekennzeichnet:

  • Die groupId -> beide teilen org.scala-lang
  • Die ArtifactId -> ist scala-reflektieren und die andere scala-Compiler
  • Die version -> können sie parallel Versionen haben oder sie können nicht

Ein maven depency wird dann als solche identifiziert:

groupId:artifactId:version 

Zum Beispiel: org.scala-lang:scala-compiler:2.11.8

Wenn Sie das alles bekommen Sie keine Schwierigkeiten haben, differenzier unterschiedliche Abhängigkeiten

Verwandte Themen