【问题标题】:Play 2.3.7 sbt multiproject compiler issuePlay 2.3.7 sbt 多项目编译器问题
【发布时间】:2023-03-30 12:35:02
【问题描述】:

我们使用的是 Play 框架 2.3.7,并使用 sbt(sbt 版本 0.13.5)建立了一个多项目,它由四个模块组成。 在项目根目录的 build.sbt 文件中,我们定义了模块:

lazy val common = (project in file("modules/common")).enablePlugins(PlayJava, SbtWeb)

lazy val store = (project in file("modules/store")).enablePlugins(PlayJava, SbtWeb).dependsOn(common)

lazy val catalog = (project in file("modules/catalog")).enablePlugins(PlayJava, SbtWeb).dependsOn(common)

lazy val backend = (project in file("modules/backend")).enablePlugins(PlayJava, SbtWeb).dependsOn(common)

lazy val root = (project in file(".")).enablePlugins(PlayJava, SbtWeb).aggregate(common, store, catalog, backend).dependsOn(common, store, catalog, backend)

如果我们试图运行我们的应用程序

activator run

它编译应用程序时不会出错。在主页上的第一个请求之后,它再次开始编译整个项目......最多四次。 这需要很长时间,但之后一切正常。

那是什么原因,项目经常编译呢?还有其他人偶然发现了这个问题吗?

谢谢。

【问题讨论】:

    标签: sbt playframework-2.3 multi-project


    【解决方案1】:

    更新到使用 ebean 持久层播放 2.3.7 后,我的项目中遇到了同样的问题。

    我注意到有些类总是会被重新编译,尽管没有对它们进行任何更改。这只发生在使用注解 @com.avaje.ebean.annotation.Transactional@Entity-classes。

    不幸的是,使用注释@play.db.ebean.Transactional 不起作用,它不会在单个事务中执行数据库命令。不确定,其中是否有still a bug,或者这适用于控制器类,但不适用于@Entity-类。

    但是为我解决了这个问题的是,使用try/finally 块来创建事务,如ebean-documentation 中所述。

    你碰巧使用ebean作为持久层吗?

    删除@transactional-annnotation 能解决您的问题吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-05
      • 2014-08-15
      • 2018-11-15
      • 1970-01-01
      • 2023-04-10
      • 2014-10-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多