繁体   English   中英

如何正确地将play2与maven,play2-maven-plugin和IDEA结合使用?

[英]How to correctly use play2 with maven, play2-maven-plugin and IDEA?

我在这个示例中使用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没有显示任何错误。 但是,我必须避免触摸Managed Sources文件夹,并且避免在其中打开任何生成的源文件,即使只是为了查看它们也是如此,因为确实存在其他参考问题,但实际上它们在那里,因为IDEA没弄清楚它是一个Play2项目。 在命令行上执行mvn package play2:run时,该应用程序将启动并按预期运行。

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

那么,对于如何正确使用它并获得IDEA来将我的项目识别为Play2,有什么建议吗? 当我选择Build/Rebuild ProjectMake module时,是否可以自动运行play2:resources-compile目标?

使用示例项目之一代替this

我使用了ScalaIDE,但是我已经测试过Idea集成并且可以正常工作。 导入Maven项目,添加Scala支持,重新构建。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM