2017-10-13 9 views
0

Mon exemple de plugin sbt se compile bien avec scala version 2.10.6. J'essaie de mettre à niveau scalaVersion: = "2.11.7" dans le plugin sbt build.sbt.accéder à des projets dépendants (pas enfants) dans plugin sbt avec scala version 2.11.7

Il rompt avec le CTE followinng: -

/Users/mogli/gitrepos/study/SbtPlugins/ScalaPlugin/src/main/scala/base/BasePlugin.scala:21: ne peut pas développer macros compilées par les versions précédentes de Scala [error]
projets val = thisProject.value.dependencies

Ce fonctionnait très bien avec scalaVersion: = "2.10.6" comme suggéré par Micro Dotta en question ci-dessous: -

accessing dependent (not child) projects in sbt plugin

plugin SBT simplifié BasePlugin.scala:

package base 

import sbt.{ThisBuild, Def, TaskKey, AutoPlugin} 
import sbt._ 
import Keys._ 


object BasePlugin extends AutoPlugin { 

    object autoImport { 
    lazy val customtask: TaskKey[Unit] = TaskKey("customtask") 
    } 

    import autoImport.customtask 


    override def projectSettings: Seq[Def.Setting[_]] = Seq(
    customtask := { 
     val projects = thisProject.value.dependencies 
     projects map println 
    } 
) 
} 

Comment ça fonctionne avec scalaVersion: = "2.11.7"? Je veux que ce plug-in à utiliser avec des projets qui utilisent la version scal 11.

Répondre

0

Essayez ceci:

override def projectSettings: Seq[Def.Setting[_]] = Seq(
     customtask := { 
      val projects = thisProject.value.dependencies 
      projects map println 
     }, 
     scalaVersion := "2.11.7" 
    ) 
0

SBT construire DEFINITIONS sont liés à une version scala par la version SBT qu'ils utilisent:

  • SBT 0.12.x construire les définitions et le code doit être compilé scala 2.9.x
  • SBT 0.13.x construire les définitions et le code doit être compilé scala 2.10.x

depuis 1.0.0 SBT est compilé version scala 2.12 et nécessite Java 8

Ainsi,

il n'y a pas de version SBT où construire SBT DEFINITIONS peut être compilé avec scala 2.11 (au moins pas sans risquer des erreurs).

Vous pouvez manipuler la version SBT que vous utilisez en le plaçant dans project/build.properties:

sbt.version=1.0.0 

Assurez-vous que vous utilisez un script enveloppe SBT en cours.