2016-06-01 13 views
2

ich von Activator 2.3.x Upgrade auf 2.4.x (und schließlich 2.5.x). Im Rahmen dieser Migration kann ich den Befehl activator eclipse nicht mehr verwenden, um ein Eclipse-Projekt aus der Play-Anwendung zu generieren.generieren Eclipse-Projekt SBT mit

Ich arbeite in einem Team, von denen einige IntelliJ verwenden. Daher kann ich diese Änderungen nicht für jedes Projekt vornehmen, da dies für die IntelliJ-Benutzer nicht sinnvoll ist und es nicht angemessen wäre, sie mit der Projektquelle zu versionieren.

Ich verfolge these Anweisungen. Hier sind die Schritte für die Migration, die ich bisher gemacht habe:

  1. Projekt ändern/plugins.sbt 2.4.6 verwenden
  2. Im Projekt/application.conf ändern evolutionplugin=disabled-play.evolutions.enabled=false
  3. Im Projekt /build.sbt, entfernen javaEbean von libraryDependencies
  4. Eclipse-Benutzer
    ein. Herunterladen und Installieren von SBT: http://www.scala-sbt.org/
    - Auszug zu
    b. Erstellen SBT_HOME Umgebungsvariable - SBT_HOME=C:\dev\.sbt\0.13
    c. Add zu PATH
    - PATH=...;%SBT_HOME%\bin;
    d. Erstellen Sie den Ordner "plugins" unter %SBT_HOME%
    - C:\dev\.sbt\0.13\plugins
    e. Erstellen Sie die Datei plugins.sbt im Plugin-Verzeichnis
    - C:\dev\.sbt\0.13\plugins\plugins.sbt
    f. Fügen Sie die folgende Zeile zu global plugins.sbt hinzu:
    - addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "4.0.0")
    g. Bearbeiten Sie %SBT_HOME%\conf\sbtopts, um das SBT-Plugins-Verzeichnis anzugeben:
    - -sbt-dir C:/dev/.sbt/0.13/plugins
    h. Bearbeiten Sie %SBT_HOME%\conf\sbtopts, um das SBT-Startverzeichnis anzugeben:
    - -sbt-boot C:/dev/.sbt/0.13/plugins/boot
    i. Erstellen sbteclipse.sbt Datei auf %SBT_HOME%

An dieser Stelle sollte ich in der Lage sein, ein Eclipse-Projekt zu erstellen, aber es kann nicht lösen sbteclipse:

[warn] :::::::::::::::::::::::::::::::::::::::::::::: 
[warn] ::   UNRESOLVED DEPENDENCIES   :: 
[warn] :::::::::::::::::::::::::::::::::::::::::::::: 
[warn] :: com.typesafe.sbteclipse#sbteclipse-plugin;4.0.0: not found 
[warn] :::::::::::::::::::::::::::::::::::::::::::::: 
[warn] 
[warn] Note: Some unresolved dependencies have extra attributes. Check that these dependencies exist with the requested attributes. 
[warn]   com.typesafe.sbteclipse:sbteclipse-plugin:4.0.0 (scalaVersion=2.11, sbtVersion=0.13) 
[warn] 
[warn] Note: Unresolved dependencies path: 
[warn]   com.typesafe.sbteclipse:sbteclipse-plugin:4.0.0 (scalaVersion=2.11, sbtVersion=0.13) (C:\dev\.sbt\0.13\plugins\plugins.sbt#L2-3) 
[warn]   +- gateway-api:gateway-api_2.11:1.0-SNAPSHOT 
sbt.ResolveException: unresolved dependency: com.typesafe.sbteclipse#sbteclipse-plugin;4.0.0: not found 
     at sbt.IvyActions$.sbt$IvyActions$$resolve(IvyActions.scala:313) 
     at sbt.IvyActions$$anonfun$updateEither$1.apply(IvyActions.scala:191) 
     at sbt.IvyActions$$anonfun$updateEither$1.apply(IvyActions.scala:168) 
     at sbt.IvySbt$Module$$anonfun$withModule$1.apply(Ivy.scala:156) 
     at sbt.IvySbt$Module$$anonfun$withModule$1.apply(Ivy.scala:156) 
     at sbt.IvySbt$$anonfun$withIvy$1.apply(Ivy.scala:133) 
     at sbt.IvySbt.sbt$IvySbt$$action$1(Ivy.scala:57) 
     at sbt.IvySbt$$anon$4.call(Ivy.scala:65) 
     at xsbt.boot.Locks$GlobalLock.withChannel$1(Locks.scala:93) 
     at xsbt.boot.Locks$GlobalLock.xsbt$boot$Locks$GlobalLock$$withChannelRetries$1(Locks.scala:78) 
     at xsbt.boot.Locks$GlobalLock$$anonfun$withFileLock$1.apply(Locks.scala:97) 
     at xsbt.boot.Using$.withResource(Using.scala:10) 
     at xsbt.boot.Using$.apply(Using.scala:9) 
     at xsbt.boot.Locks$GlobalLock.ignoringDeadlockAvoided(Locks.scala:58) 
     at xsbt.boot.Locks$GlobalLock.withLock(Locks.scala:48) 
     at xsbt.boot.Locks$.apply0(Locks.scala:31) 
     at xsbt.boot.Locks$.apply(Locks.scala:28) 
     at sbt.IvySbt.withDefaultLogger(Ivy.scala:65) 
     at sbt.IvySbt.withIvy(Ivy.scala:128) 
     at sbt.IvySbt.withIvy(Ivy.scala:125) 
     at sbt.IvySbt$Module.withModule(Ivy.scala:156) 
     at sbt.IvyActions$.updateEither(IvyActions.scala:168) 
     at sbt.Classpaths$$anonfun$sbt$Classpaths$$work$1$1.apply(Defaults.scala:1439) 
     at sbt.Classpaths$$anonfun$sbt$Classpaths$$work$1$1.apply(Defaults.scala:1435) 
     at sbt.Classpaths$$anonfun$doWork$1$1$$anonfun$90.apply(Defaults.scala:1470) 
     at sbt.Classpaths$$anonfun$doWork$1$1$$anonfun$90.apply(Defaults.scala:1468) 
     at sbt.Tracked$$anonfun$lastOutput$1.apply(Tracked.scala:37) 
     at sbt.Classpaths$$anonfun$doWork$1$1.apply(Defaults.scala:1473) 
     at sbt.Classpaths$$anonfun$doWork$1$1.apply(Defaults.scala:1467) 
     at sbt.Tracked$$anonfun$inputChanged$1.apply(Tracked.scala:60) 
     at sbt.Classpaths$.cachedUpdate(Defaults.scala:1490) 
     at sbt.Classpaths$$anonfun$updateTask$1.apply(Defaults.scala:1417) 
     at sbt.Classpaths$$anonfun$updateTask$1.apply(Defaults.scala:1369) 
     at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47) 
     at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:40) 
     at sbt.std.Transform$$anon$4.work(System.scala:63) 
     at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228) 
     at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228) 
     at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17) 
     at sbt.Execute.work(Execute.scala:237) 
     at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228) 
     at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228) 
     at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159) 
     at sbt.CompletionService$$anon$2.call(CompletionService.scala:28) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
     at java.lang.Thread.run(Thread.java:745) 
[error] (*:update) sbt.ResolveException: unresolved dependency: com.typesafe.sbteclipse#sbteclipse-plugin;4.0.0: not found 
[error] Could not create Eclipse project files: 
[error] Error evaluating task 'scalacOptions': error 
[error] Error evaluating task 'externalDependencyClasspath': error 

So können Sie sich von den Schritten siehe oben skizzierte Ich versuche, dass Eclipse-Benutzer Projekte über die Play-Dienste erstellen können. Ich habe SBT heruntergeladen, es in meinen Dev-Ordner extrahiert und angefangen, dort globale Änderungen vorzunehmen.

Inhalt von C:\dev\.sbt\0.13\plugins\plugins.sbt:

// Support Play in Eclipse 
addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "4.0.0") 

Inhalt von C:\dev\.sbt\0.13\sbteclipse.sbt:

import com.typesafe.sbteclipse.plugin.EclipsePlugin.EclipseKeys 

// Download Source and Javadocs with binaries 
EclipseKeys.withSource := true 
EclipseKeys.withJavadoc := true 

// Compile the project before generating Eclipse files, so that generated .scala or .class files for views and routes are present 
EclipseKeys.preTasks := Seq(compile in Compile) 

// Java project. Don't expect Scala IDE 
EclipseKeys.projectFlavor := EclipseProjectFlavor.Java   

// Use .class files instead of generated .scala files for views and routes 
EclipseKeys.createSrc := EclipseCreateSrc.ValueSet(EclipseCreateSrc.ManagedClasses, EclipseCreateSrc.ManagedResources) 

Inhalt von C:\dev\.sbt\0.13\conf\sbtopts:

# ------------------------------------------------ # 
# The SBT Configuration file.      # 
# ------------------------------------------------ # 


# Disable ANSI color codes 
# 
#-no-colors 

# Starts sbt even if the current directory contains no sbt project. 
# 
-sbt-create 

# Path to global settings/plugins directory (default: ~/.sbt) 
# 
#-sbt-dir /etc/sbt 
-sbt-dir C:/dev/.sbt/0.13/plugins 

# Path to shared boot directory (default: ~/.sbt/boot in 0.11 series) 
# 
-sbt-boot C:/dev/.sbt/0.13/plugins/boot 

# Path to local Ivy repository (default: ~/.ivy2) 
# 
#-ivy ~/.ivy2 

# set memory options 
# 
#-mem <integer> 

# Use local caches for projects, no sharing. 
# 
#-no-share 

# Put SBT in offline mode. 
# 
#-offline 

# Sets the SBT version to use. 
#-sbt-version 0.11.3 

# Scala version (default: latest release) 
# 
#-scala-home <path>   
#-scala-version <version> 

# java version (default: java from PATH, currently $(java -version |& grep version)) 
# 
#-java-home <path> 

Projekt bei C:\dev\eclipse\workspaces\company\project existiert. In Cygwin navigiere ich zu diesem Ort und führe sbt eclipse (oder activator eclipse, was das gleiche Ergebnis hat) aus, was nach meinem Verständnis funktionieren sollte. Aber, wie ich schon sagte, bekomme ich einen Fehler, und es funktioniert nicht.

Kann mir jemand helfen, diese Einrichtung korrekt einzurichten, damit ich Eclipse-Projektdateien für einen Play-Dienst erstellen und meine glückliche Reise zur Migration fortsetzen kann?

Ich denke, das sbteclipse-Plugin versucht, mit meiner Systemversion von Scala, anstelle der vom Plugin angegebenen Version und im Boot-Ordner zur Verfügung gestellt werden.

Antwort

0

Ich habe kürzlich Migration von Play 2.4 zu Play 2.5 und beschrieben die gesamte Prozedur in this post. In another post können Sie finden, wie Sie das Projekt "eclipcify".

Ich habe nicht darauf geachtet, dass Sie die globalen sbt-Einstellungen verwenden. Für globale sbt Einstellungen:

  1. c: \ dev \ .sbt \ 0.13 \ Plugins \ plugins.sbt mit Inhalt:

    //Support Play in Eclipse 
    addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "4.0.0") 
    
  2. C: \ dev \ .sbt \ sbteclipse .sbt mit Inhalt:

    import com.typesafe.sbteclipse.plugin.EclipsePlugin.EclipseKeys 
    EclipseKeys.preTasks := Seq(compile in Compile) 
    EclipseKeys.withSource := true 
    EclipseKeys.withJavadoc := true 
    
    // Java project. Don't expect Scala IDE 
    EclipseKeys.projectFlavor := EclipseProjectFlavor.Java 
    
    // Use .class files instead of generated .scala files for views and routes 
    EclipseKeys.createSrc := EclipseCreateSrc.ValueSet(EclipseCreateSrc.ManagedClasses, EclipseCreateSrc.ManagedResources) 
    

    Hinweis: In meinem Fall statt dev ist mein Benutzer root-Verzeichnis.

  3. Das Projekt build.sbt:

    import NativePackagerHelper._ 
    name := """play-server-example""" 
    
    version := "1.0-SNAPSHOT" 
    
    lazy val root = (project in file(".")).enablePlugins(PlayJava) 
    
    scalaVersion := "2.11.8" 
    
    resolvers += "Local Maven Repository" at "file:///"+Path.userHome.absolutePath+"/.m2/repository" 
    
    libraryDependencies ++= Seq(javaJdbc, cache, javaWs) 
    

    Hinweis: Ursprünglich habe ich scalaVersion: = 2.11.7, da dieser Wert generiert wurde, aber für den Test, den ich 2.11.8 setzen. Dies funktioniert mit beiden.

  4. Ich habe nichts mehr: keine sbt Optionen, nur sbt home in Umgebungsvariablen (genau wie es in meinem Beitrag ist).

Fazit: Ich habe nur 1,2,3 Artikel arbeiten, um die Dinge zu bekommen.

+0

Während ich die Beiträge und Links zu schätzen weiß, richten Sie das Eclipse-Plugin pro Projekt ein, was ich ausdrücklich gesagt habe, dass ich nicht kann. Ich muss sbt global pro Entwickler konfigurieren. – liltitus27

+1

Ich habe die Antwort bearbeitet ... – asch

+0

ich kann es immer noch nicht zur Arbeit bekommen. Ich habe meinen ursprünglichen Beitrag für alle Änderungen aktualisiert, die ich als Reaktion auf Ihren Beitrag vorgenommen habe. Die Eclipse-Benutzerschritte sollten die relevanten Schritte sein.Ich habe, so detailliert wie möglich, jeden Schritt beschrieben, den ich unternommen habe, einschließlich Ihrer Vorschläge. Danke, dass Sie sich die Zeit genommen haben, um zu helfen, ich schätze es. – liltitus27