Scala 建立IntelliJ 2017,与Gradle 4.2和最新的Play Framework 2.6合作
我正在尝试使用Gradle 4.2.1设置IntelliJ 2017.2以与我的Play 2.6应用程序配合使用 我还安装了用于IntelliJ的Scala插件 经过数小时对各种博客和指南的筛选,我创建了一个build.gradle文件,该文件如下所示:Scala 建立IntelliJ 2017,与Gradle 4.2和最新的Play Framework 2.6合作,scala,intellij-idea,gradle,playframework,playframework-2.6,Scala,Intellij Idea,Gradle,Playframework,Playframework 2.6,我正在尝试使用Gradle 4.2.1设置IntelliJ 2017.2以与我的Play 2.6应用程序配合使用 我还安装了用于IntelliJ的Scala插件 经过数小时对各种博客和指南的筛选,我创建了一个build.gradle文件,该文件如下所示: plugins { id 'play' id 'idea' } model { components { play { platform play: '2.6.6', scala
plugins {
id 'play'
id 'idea'
}
model {
components {
play {
platform play: '2.6.6', scala: '2.11'
injectedRoutesGenerator = true
}
}
}
idea {
module {
sourceDirs += project.file('app')
testSourceDirs += project.file('test')
project.file("${project.buildDir}/src/play/binary").listFiles().each {
if (it.name.endsWith('ScalaSources')) {
sourceDirs += it
generatedSourceDirs += it
}
}
outputDir = project.file("${project.buildDir}/playBinary/classes")
testOutputDir = project.file("${project.buildDir}/playBinary/testClasses")
scopes.COMPILE = [plus: [configurations.play], minus: []]
scopes.RUNTIME = [plus: [configurations.playRun], minus:[configurations.play]]
scopes.TEST = [plus: [configurations.playTest], minus: [configurations.playRun]]
sourceDirs += project.file('conf')
testSourceDirs += project.file('test/resources')
}
}
dependencies {
// dependencies...
}
我面临的主要问题是IntelliJ无法正确找到我的所有源代码
如果我尝试在项目设置中手动添加内容(例如“app”目录),我的更改将通过渐变刷新重置
我也尝试过使用Gradle配置,比如“为每个源代码集创建单独的模块”,但并没有太大帮助
我知道这不是一个典型的设置,因为大多数人都使用SBT进行播放,但不幸的是,由于Gradle是工作中的标准,我们暂时无法使用它。有没有人对IntelliJ 2017、Gradle 4.2和Play 2.6的设置有任何运气 我发现Intellij 2017并不真正支持Gradle play插件。我正在运行IDEA 2017 3.5和Gradle 4.6,从build.Gradle中简单导入Gradle项目是行不通的。在处理源文件时,IDEA只不过是一个记事本 我认为正在发生的是,这个想法是硬编码的,专门寻找Java插件的配置和源代码集。您的scopes配置可能会做同样的事情,但首先,我添加了两种配置:
// IDEA will not use the dependencies unless it finds these particular configurations.
configurations.create(JavaPlugin.COMPILE_CLASSPATH_CONFIGURATION_NAME, configuration -> {
configuration.extendsFrom(configurations.findByName(PlayPluginConfigurations.COMPILE_CONFIGURATION));
configuration.setTransitive(true);
});
configurations.create(JavaPlugin.TEST_COMPILE_CLASSPATH_CONFIGURATION_NAME, configuration -> {
configuration.extendsFrom(configurations.findByName(PlayPluginConfigurations.TEST_COMPILE_CONFIGURATION));
configuration.setTransitive(true);
});
这允许IDEA识别渐变依赖项,但它们不会出现在IDE中,除非它们与IDEA项目结构的模块源相关联,所以我添加了两个源集——它们的唯一目的是触发IDEA识别依赖项,而不是让IDEA在构建任何东西时使用它们。(我应用“java base”插件,并使用JavaPluginConvention对象的源集。)
我仍然缺少一些细节。如果有人可以添加详细信息,我很乐意与大家分享我的插件,上面的插件来自于此。我没有使用“idea”插件——我只是单独应用“play”插件,应用上面的修复,并将该项目作为Gradle项目导入。gradle任务在IDE中运行良好,依赖项正确显示,并且IDE的所有优点都恢复了活力。我发现Intellij 2017并不真正支持gradle play插件。我正在运行IDEA 2017 3.5和Gradle 4.6,从build.Gradle中简单导入Gradle项目是行不通的。在处理源文件时,IDEA只不过是一个记事本 我认为正在发生的是,这个想法是硬编码的,专门寻找Java插件的配置和源代码集。您的scopes配置可能会做同样的事情,但首先,我添加了两种配置:
// IDEA will not use the dependencies unless it finds these particular configurations.
configurations.create(JavaPlugin.COMPILE_CLASSPATH_CONFIGURATION_NAME, configuration -> {
configuration.extendsFrom(configurations.findByName(PlayPluginConfigurations.COMPILE_CONFIGURATION));
configuration.setTransitive(true);
});
configurations.create(JavaPlugin.TEST_COMPILE_CLASSPATH_CONFIGURATION_NAME, configuration -> {
configuration.extendsFrom(configurations.findByName(PlayPluginConfigurations.TEST_COMPILE_CONFIGURATION));
configuration.setTransitive(true);
});
这允许IDEA识别渐变依赖项,但它们不会出现在IDE中,除非它们与IDEA项目结构的模块源相关联,所以我添加了两个源集——它们的唯一目的是触发IDEA识别依赖项,而不是让IDEA在构建任何东西时使用它们。(我应用“java base”插件,并使用JavaPluginConvention对象的源集。)
我仍然缺少一些细节。如果有人可以添加详细信息,我很乐意与大家分享我的插件,上面的插件来自于此。我没有使用“idea”插件——我只是单独应用“play”插件,应用上面的修复,并将该项目作为Gradle项目导入。gradle任务在IDE中工作得很好,依赖项正确地显示了IDE的所有优点,只要通过单击内容来导航源代码,这些优点就会重现