如何正确使用play2与maven,play2-maven-plugin和IDEA?

时间:2015-04-28 10:41:01

标签: scala maven intellij-idea playframework

我在this example中使用Maven设置了一个play2项目,根据play2-maven-plugin的官方文档适应了Play 2.4。我正在使用IntelliJ IDEA。

现在我有一个简单的控制器:

object FooController extends Controller {
  val foo = Action {
    Ok("foo")
  }

  val bar = Action {
    Redirect(routes.FooController.foo())
  }
}

我的routes文件包含:

GET /foo    controllers.FooController.foo
GET /bar    controllers.FooController.bar

现在,我遇到了几个问题。

第一个问题是FooController未找到routes。我不得不在命令行上手动执行mvn play2:routes-compile以生成路由,但它们位于名为target/src_managed/main的排除目录中。为了使它们在范围内,我必须使用build-helper-maven-plugin,如此:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>${build-helper-maven-plugin.version}</version>
    <executions>
        <execution>
            <phase>process-sources</phase>
            <goals><goal>add-source</goal></goals>
            <configuration>
                <sources>
                    <source>${project.build.directory}/src_managed/main</source>
                </sources>
            </configuration>
        </execution>
    </executions>
</plugin>

我再次mvn clean play2:routes-compile之后路线工作,IDEA显示没有错误。但是,我必须避免触摸托管源文件夹,并避免在那里打开任何生成的源文件,即使只是为了查看它们,因为会有其他参考问题,但实际上并不存在,但它们是因为IDEA没有图这是一个Play2项目。在命令行上执行mvn package play2:run时,应用程序将启动并按预期工作。

不幸的是,我目前必须使用Maven,因为它是一个包含许多子模块的大型Maven项目,我无法在几小时/几天内更改为SBT。

那么,有没有关于如何正确使用它并让IDEA将我的项目识别为Play2的建议?当我选择play2:resources-compileBuild/Rebuild Project时,是否可以自动运行Make module目标?

1 个答案:

答案 0 :(得分:0)

使用example projects之一代替this

我使用ScalaIDE,但我测试了Idea集成并且它可以工作。导入Maven项目,添加Scala支持,重建。