pagina oficial descargar como scala sbt ivy scala-ide ivyde

oficial - scala java download



¿Cómo adjuntar fuentes a las dependencias administradas de SBT en Scala IDE? (5)

Bueno, he renunciado a esto y regresé a NetBeans 7.1.2 + complemento Scala + Maven. Esta combinación está mucho mejor integrada y funciona fuera de la caja sin retoques.

Estoy usando Scala IDE 2.0.1 y SBT 0.11.2 para comenzar con Akka 2.0.1. Mi build.sbt se ve así:

name := "akka" version := "0.1" scalaVersion := "2.9.2" resolvers += "Typesafe Repository" at "http://repo.typesafe.com/typesafe/releases/" libraryDependencies += "com.typesafe.akka" % "akka-actor" % "2.0.1"

Como puedes ver, no hay nada espectacular.

Ahora, ¿cómo puedo decirle a Eclipse que use el artefacto con el clasificador de fuentes para la biblioteca akka-actor?

En SBT, puedo usar los clasificadores de actualización para descargar fuentes y Javadocs al repositorio de Ivy, pero incluso si hago esto antes de ejecutar el comando eclipse desde el complemento sbteclipse, Eclipse aún no conoce las fuentes. Por supuesto, podría hacer esto manualmente, pero esto no se adapta bien a más bibliotecas.

También he intentado usar el complemento IvyDE con el comando de entrega local. Si bien esto integra la gestión de dependencias, no parece ayudar con las fuentes.

¿Alguna pista?

Edición: Este es el archivo ivy.xml generado desde deliver-local:

<?xml version="1.0" encoding="UTF-8"?> <ivy-module version="2.0" xmlns:e="http://ant.apache.org/ivy/extra"> <info organisation="default" module="akka_2.9.2" revision="0.1" status="release" publication="20120506225613"> <description> akka </description> </info> <configurations> <conf name="compile" visibility="public" description=""/> <conf name="runtime" visibility="public" description="" extends="compile"/> <conf name="test" visibility="public" description="" extends="runtime"/> <conf name="provided" visibility="public" description=""/> <conf name="optional" visibility="public" description=""/> <conf name="sources" visibility="public" description=""/> <conf name="docs" visibility="public" description=""/> <conf name="pom" visibility="public" description=""/> </configurations> <publications> <artifact name="akka_2.9.2" type="pom" ext="pom" conf="pom"/> <artifact name="akka_2.9.2" type="jar" ext="jar" conf="compile"/> <artifact name="akka_2.9.2" type="src" ext="jar" conf="sources" e:classifier="sources"/> <artifact name="akka_2.9.2" type="doc" ext="jar" conf="docs" e:classifier="javadoc"/> </publications> <dependencies> <dependency org="org.scala-lang" name="scala-library" rev="2.9.2" conf="compile->default(compile)"/> <dependency org="com.typesafe.akka" name="akka-actor" rev="2.0.1" conf="compile->default(compile)"/> <exclude org="org.scala-lang" module="scala-library" artifact="*" type="jar" ext="*" matcher="exact"/> <exclude org="org.scala-lang" module="scala-compiler" artifact="*" type="jar" ext="*" matcher="exact"/> <override org="org.scala-lang" module="scala-library" matcher="exact" rev="2.9.2"/> <override org="org.scala-lang" module="scala-compiler" matcher="exact" rev="2.9.2"/> </dependencies> </ivy-module>

Soy nuevo en Ivy, así que esto no me dice mucho. Me imagino que menciona las fuentes y los javadocs, pero de alguna manera el IvyDE no lo capta.


Finalmente encontré una solución para permitir que sbt descargue las fuentes y le diga a Eclipse dónde encontrarlas.

Añadir en build.sbt:

EclipseKeys.withSource := true

Entonces corre:

rm -rf ~/.ivy2/cache/ sbt update-classifiers sbt eclipse

Lo extraño es que si ya descargaste las dependencias en hiedra, las tienes en caché y no podrás descargar las fuentes para ellas.


Logré que esto funcionara finalmente.

Tuve que usar un archivo de configuración de hiedra externo:

<ivysettings> <properties environment="env" /> <settings defaultResolver="play" defaultResolveMode="dynamic" /> <caches defaultCacheDir="${env.PLAY_HOME}/repository/cache" /> <resolvers> <chain name="play"> <ibiblio name="typesafe-releases" m2compatible="true" root="http://repo.typesafe.com/typesafe/releases" /> <ibiblio name="sonatype-oss-releases" m2compatible="true" root="http://oss.sonatype.org/content/repositories/releases" /> <filesystem name="local-filesystem"> <ivy pattern="${env.PLAY_HOME}/repository/local/[organization]/[module]/[revision]/ivys/ivy.xml" /> <artifact pattern="${env.PLAY_HOME}/repository/local/[organization]/[module]/[revision]/[type]s/[module](-[classifier]).[ext]" /> </filesystem> <ibiblio name="central-uk" m2compatible="true" root="http://uk.maven.org/maven2" /> <ibiblio name="typesafe-snapshots" m2compatible="true" root="http://repo.typesafe.com/typesafe/snapshots" /> <ibiblio name="sonatype-oss-snapshots" m2compatible="true" root="http://oss.sonatype.org/content/repositories/snapshots" /> </chain> </resolvers> </ivysettings>

Y añadir:

externalIvySettings(baseDirectory(_ / "ivysettings.xml"))

a mi Build.scala.

El orden de los solucionadores en la cadena demostró ser importante, porque si Ivy encuentra un frasco pero no hay fuentes, no buscará en las otras resoluciones si hay fuentes / javadoc. El repositorio en la instalación local de Play no tiene fuentes o javadoc en.

Esto me proporciona archivos adjuntos de origen para la mayoría de los archivos jar en mis dependencias cuando IvyDE se resuelve en Eclipse.


Me parece que es más fácil dar a IvyDE y sbt diferentes directorios de caché de hiedra. Sí, ocupa más espacio, pero sbt por defecto no descarga las fuentes. Y una vez que sbt ha cargado el caché sin fuentes, IvyDE no los agregará. Puedes decirle a sbt que los busque, pero para mí es más fácil usar más espacio en el disco y usar dos cachés diferentes.

Hago esto dejando sbt en la configuración predeterminada y configurando IvyDE para usar este archivo en Preferencias> Hiedra> pestaña Configuración> archivo de configuración de Ivy:

<ivysettings> <settings defaultResolver="nexus" /> <property name="nexus-public" value="http://localhost:8081/nexus/content/groups/public" /> <resolvers> <ibiblio name="nexus" m2compatible="true" root="${nexus-public}" /> </resolvers> <caches defaultCacheDir="${user.home}/.ivy2eclipse" /> </ivysettings>

Eso apunta a mi servidor nexus local, así que necesitarás modificarlo para tu entorno.


Puedes poner

EclipseKeys.withSource := true

a su build.sbt , que permite a sbteclipse descargar todas las fuentes y hacerlas accesibles dentro de Eclipse. Tenga en cuenta que esto descargará todas las fuentes de todas las dependencias configuradas. No tengo idea de cómo decirle a sbt que descargue solo las fuentes para dependencias individuales.