Позвольте мне сначала установить мою конечную цель:
Я хочу создать приложение с графическим интерфейсом только для Scala, которое я могу спроектировать с помощью построителя сцен и более позднего порта с глюоном для любой платформы, которую я хочу.
Мне удалось выяснить, что для этого нужно использовать JavaFXPorts в Scala. Я также узнал, что мне нужно использовать gradle для успешного применения глюона, или, кажется, так (пожалуйста, поправьте меня, если я ошибаюсь, потому что именно здесь начинается головная боль)
Короче говоря, это означает: ScalaFXML и Gradle должны работать вместе, но как?
Я нашел несколько интересных проектов, но, к сожалению, ни один из них не подошел по моим критериям:
- Этот один использовал JavaFX вместо ScalaFX
- Этот один добавил Java к проекту вместо использования чистого scala
После долгих поисков я нашел проект , который был почти прав. К сожалению, это было построено в SBT, а не в Gradle.
Тем не менее я использовал этот проект в качестве основы / примера, поскольку он был первым, кто использовал sfxml так, чтобы это было легко понять.
У меня есть скрипт gradle, который почти работает
buildscript {
repositories {
mavenLocal()
jcenter()
}
dependencies {
// during build, we depend on the jfxmobile-plugin
classpath 'org.javafxports:jfxmobile-plugin:1.3.10'
}
}
plugins {
id 'java'
id 'scala'
id 'application'
}
apply plugin: 'org.javafxports.jfxmobile'
configurations {
scalaCompiler
scalaCompilerPlugin
}
configurations.scalaCompiler.transitive = false
compileScala.targetCompatibility = "1.8"
mainClassName = 'sfxml.Main'
repositories {
mavenCentral()
jcenter()
maven {
url 'http://nexus.gluonhq.com/nexus/content/repositories/releases'
}
}
dependencies {
compile 'org.scala-lang:scala-library:2.12.6'
compile 'org.scala-lang:scala-compiler:2.12.6'
compile 'com.gluonhq:particle:1.1.3'
compile group: 'org.scalafx', name: 'scalafx_2.12', version: '8.0.144-R12'
compile group: 'org.scalafx', name: 'scalafxml-core-sfx8_2.12', version: '0.4'
compile group: 'org.scalamacros', name: 'paradise_2.12.6', version: '2.1.1'
scalaCompiler "org.scalamacros:paradise_2.12.6:2.1.1"
testCompile group: 'junit', name: 'junit', version: '4.12'
}
tasks.withType(ScalaCompile) {
scalaCompileOptions.additionalParameters = [
"-Xplugin:" + configurations.scalaCompilerPlugin.asPath,
"-Ymacro-debug-lite"
]
options.compilerArgs = ["-Xdebug", "-agentlib:jdwp=transport=dt_socket,server=n,suspend=y,address=9999"]
}
После окончательного поиска всех нужных репозиториев (или, как мне показалось), никаких ошибок не было отмечено во время процесса импорта из IDEA, но, наконец, я получил следующую ошибку:
Error:(10, 7) macro annotation could not be expanded (the most common reason for that is that you need to enable the macro paradise plugin; another possibility is that you try to use macro annotation in the same compilation run that defines it)
class AdoptionFormPresenter(private val sizeTextField: TextField,
Но, как вы уже поняли - если вы читали скрипт gradle - я уже пытался включить плагин. Так как мне это исправить и достичь цели, поставленной в начале?
Кстати: я уже нашел следующие решения, но они также не работали
- Этот использует maven, но я хочу использовать gradle, так ... thx google?
- Это к сожалению не работает
- Это к сожалению ... тоже не работает: /
Сноска. Все SDK были недавно загружены на момент публикации