2015-09-15 2 views
3

Я использую новую поддержку Play Framework в Gradle 2.7.Gradle + PlayFramework: не удается разрешить зависимость источников

По иронии судьбы, игра 2.3.x явно зависит от org.scala-sbt:io:0.13.8.

Gradle способен разрешить JAR (не источники, только классы) из хранилища типизированного, если добавить

model { components { play { platform play: "2.3.7", scala: "2.10", java: "1.7" } } } repositories { maven { name "typesafe-maven-release" url "https://repo.typesafe.com/typesafe/maven-releases" } ivy { name "typesafe-ivy-release" url "https://repo.typesafe.com/typesafe/ivy-releases" layout "ivy" } } dependencies { play group: "org.scala-sbt", name: "io", version: "0.13.8", classifier: "jar", configuration: "compile" }

однако, кажется, что он не может решить io-sources.jar. Я получаю это:

FAILURE: Build failed with an exception.

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

Execution exception [RuntimeException: java.lang.NoClassDefFoundError: sbt/Path$]

Любые советы? Я не могу понять, как исключить или разрешить зависимость источников.

+1

Я ответил на Форум Gradle: https://discuss.gradle.org/t/gradle-2-7-play-cannot-resolve-sources-dependency/11707 –

+1

Нашли комментарий о Typeafe Ivy repo: https://github.com/linkedin/rest.li-sbt-plugin/blob/de19700211923d76acdccfd40610884a4e689717/build.gradle#L77-L82 –

ответ

0

Разновидность Gradle DEV ответил на мой вопрос о Gradle forums

TL; DR - Gradle/Play, характерный для 2.3.7, который может быть разрешен с помощью

repositories { 
    ivy { 
     url "https://repo.typesafe.com/typesafe/ivy-releases/" 
     layout "pattern", { 
      ivy "[organisation]/[module]/[revision]/ivys/ivy.xml" 
      artifact "[organisation]/[module]/[revision]/jars/[artifact].[ext]" 
     } 
    } 
} 

В моем случае u pgrading to Play 2.3.9 исправил мою проблему.

1

Я столкнулся с тем же RuntimeException (NoClassDefFound sbt/Path $) с Play 2.4 и Gradle 2.7. В моем случае проблема с корнем состояла в том, чтобы не правильно определять все репозитории (не включал typesafe-ivy -> sbt-io не был разрешен -> мне нужно было указать sbt-io-dependency -> неправильный sbt-io, который привел к упоминанию Исключение ...).

Я бы посоветовал добавить jcenter() в качестве репозитория, удалить явную зависимость от sbt и указать версию воспроизведения в файле build.gradle. В качестве примера мой работает gradle.build:

plugins { 
id 'play' 
} 
dependencies { 
repositories { 
    jcenter() 
    maven { 
    name "typesafe-maven-release" 
    url "https://repo.typesafe.com/typesafe/maven-releases" 
    } 
    ivy { 
    name "typesafe-ivy-release" 
    url "https://repo.typesafe.com/typesafe/ivy-releases" 
    layout "ivy" 
    } 
} 
play 'com.typesafe.play:play-jdbc_2.11:2.4.3' 
[...other dependencies - but not "org.scala-sbt"!] 
} 

model { 
components { 
    play { 
    platform play: '2.4.3', scala: '2.11' 
    injectedRoutesGenerator = true 
    } 
} 
} 

В вашем случае последняя часть должна быть:

model { 
components { 
    play { 
    platform play: '2.3.7', scala: '2.10' 
    } 
} 
} 
+0

Спасибо за совет. Боюсь, что добавление jcenter() и варианты исключения «org.scala-sbt» не изменили ситуацию к лучшему. Когда вы говорите «удалить явную зависимость», вы исключаете sbt для всей конфигурации игры или другим способом? –

+0

Я обновил предложение, чтобы пояснить, что я просто не беспокоюсь о том, чтобы импортировать «org.scala-sbt» в мой файл сборки. – user24195

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