2016-06-01 2 views
2

Я обновляюсь от Activator 2.3.x до 2.4.x (и, в конечном итоге, до 2.5.x). В рамках этой миграции я больше не могу использовать команду activator eclipse для создания проекта Eclipse из приложения Play.Сгенерировать проект Eclipse с использованием SBT

Я работаю над командой, некоторые из которых используют IntelliJ. Таким образом, я не могу внести эти изменения для каждого проекта, так как это было бы непонятно для пользователей IntelliJ, и было бы нецелесообразно использовать версию с источником проекта.

Я следил за инструкциями these. Вот шаги для миграции, которые я взял до сих пор:

  1. Изменение проекта/plugins.sbt использовать 2.4.6
  2. В проекте/application.conf, изменить evolutionplugin=disabled к play.evolutions.enabled=false
  3. В проекте /build.sbt, удалить javaEbean из libraryDependencies
  4. Затмения Пользователи
    а. Загрузить и установить SBT: http://www.scala-sbt.org/
    - Экстракт до
    b. Создать переменную среды SBT_HOME - SBT_HOME=C:\dev\.sbt\0.13
    c. Add %SBT_HOME%\bin до PATH
    - PATH=...;%SBT_HOME%\bin;
    d. Создать папку «плагинов» по ​​адресу %SBT_HOME%
    - C:\dev\.sbt\0.13\plugins
    e. Создать файл plugins.sbt в каталоге плагинов
    - C:\dev\.sbt\0.13\plugins\plugins.sbt
    f. Добавьте следующую глобальную версию plugins.sbt:
    - addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "4.0.0")
    g. Изменить %SBT_HOME%\conf\sbtopts, чтобы указать каталог SBT-плагинов:
    - -sbt-dir C:/dev/.sbt/0.13/plugins
    h. Изменить %SBT_HOME%\conf\sbtopts указать каталог загрузки SBT:
    - -sbt-boot C:/dev/.sbt/0.13/plugins/boot
    i. Создать sbteclipse.sbt файл на %SBT_HOME%

На данный момент, я должен быть в состоянии создать проект Eclipse, но он не может разрешить 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 

Таким образом, вы можете видеть из шагов, описанных выше , Я пытаюсь разрешить пользователям Eclipse создавать проекты из Служб Play. Я загрузил SBT, извлек его в папку dev и начал делать глобальные изменения там.

Содержание C:\dev\.sbt\0.13\plugins\plugins.sbt:

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

Содержание из 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) 

Содержание из 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> 

Проект существует в C:\dev\eclipse\workspaces\company\project. В Cygwin я перехожу к этому месту и выполняю sbt eclipse (или activator eclipse, который имеет тот же результат), который, согласно моему пониманию, должен работать. Но, как я уже сказал, я получаю сообщение об ошибке, и он не работает.

Может ли кто-нибудь помочь мне правильно настроить эту настройку, чтобы я мог создавать файлы проекта Eclipse для службы Play и продолжать мое счастливое путешествие по миграции LIL?

Я думаю, что плагин sbteclipse пытается втянуть с версией scala моей системы вместо версии, указанной плагином и предоставленной в загрузочной папке.

ответ

0

Я недавно перешел с Play 2.4 на Play 2.5 и описал всю процедуру в this post. В another post вы можете найти, как «затмить» проект.

Я не обращал внимания, что вы используете глобальные настройки sbt. Для глобальных настроек SBT:

  1. Создать C: \ DEV \ .sbt \ 0,13 \ Plugins \ plugins.sbt с содержанием:

    //Support Play in Eclipse 
    addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "4.0.0") 
    
  2. Создать C: \ DEV \ .sbt \ sbteclipse .sbt с содержанием:

    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) 
    

    Примечание: В моем случае вместо DEV мой корневой каталог пользователя.

  3. Проект 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) 
    

    Примечание: Первоначально я использовал scalaVersion: = 2.11.7, так как это было сгенерированное значение, но для теста я поставил 2.11.8. Это работает с обоими из них.

  4. У меня нет ничего более: нет параметров sbt, только sbt home в переменных окружения (точно так же, как в моем сообщении).

в нижней строке: я сделал только те пункты 1,2,3, чтобы получить все работало.

+0

В то время как я ценю сообщения и ссылки, вы настраиваете плагин eclipse для каждого проекта, о котором я прямо заявил, что я не могу этого сделать. Мне нужно настроить sbt глобально, для каждого разработчика. – liltitus27

+1

Я отредактировал ответ ... – asch

+0

Я все еще не могу заставить его работать. Я обновил свое оригинальное сообщение для всех изменений, внесенных мной в ответ на ваш пост. Шаги пользователей Eclipse должны быть уместными.я изложил, насколько это возможно, каждый шаг, который я сделал, включая то, что вы предложили. также, спасибо, что нашли время, чтобы помочь, я ценю это. – liltitus27

Смежные вопросы