2017-11-07 6 views
1

マルチモジュールを使用してプロジェクトをプレイしようとしていますSBTを使用してプロジェクトをプレイしています。 私たちのプロジェクトは5つのモジュール[commons, channel , ...]を持っています。 ローカルシステムでsbt runを使用すると、すべて正常に動作します。 サーバーにデプロイする場合は、sbt distbuild the projectを使用します。 しかし、sbt distによって生成されたスクリプトを使用してアプリケーションを実行すると、問題が表示されます。ここマルチモジュールをデプロイする

エラーの一例である。

[error] error_handler - Unhandled Error 
java.lang.IllegalArgumentException: No query defined for that name [automaticChannel.getTagByChannelId] 
    at org.hibernate.internal.AbstractSharedSessionContract.buildQueryFromName(AbstractSharedSessionContract.java:770) 
    at org.hibernate.internal.AbstractSharedSessionContract.createNamedQuery(AbstractSharedSessionContract.java:748) 
    at org.hibernate.internal.AbstractSessionImpl.createNamedQuery(AbstractSessionImpl.java:23) 
    at repositories.GenericRepository.namedQuery(GenericRepository.java:291) 
    at repositories.GenericRepository.namedNativeQuery(GenericRepository.java:573) 
    at repositories.AutomaticChannelRepository.getTagIds(AutomaticChannelRepository.java:63) 
    at services.AutomaticChannelService.lambda$tagIds$6(AutomaticChannelService.java:159) 
    at play.db.jpa.DefaultJPAApi.lambda$withTransaction$3(DefaultJPAApi.java:197) 
    at play.db.jpa.DefaultJPAApi.withTransaction(DefaultJPAApi.java:138) 
    at play.db.jpa.DefaultJPAApi.withTransaction(DefaultJPAApi.java:196) 

GenericRepositoryクラスはコモンズモジュールとAutomaticChannelRepositoryに存在チャネルモジュールに存在します。 buid.sbtファイルの

パート:

lazy val connector = (project in file("modules/connector")) 
    .enablePlugins(PlayScala) 
    .settings(
    commonSettings, 
    libraryDependencies += "org.mindrot" % "jbcrypt" % "0.4" 
) 

lazy val common = (project in file("modules/common")) 
    .enablePlugins(PlayJava) 
    .dependsOn(connector) 
    .settings(
    commonSettings, 
    libraryDependencies ++= Seq(
     javaJdbc, 
     filters, 
     guice, 
     javaWs, 
     ehcache, 
     javaJpa, 
     evolutions, 
     "org.hibernate" % "hibernate-entitymanager" % "5.2.11.Final", 
     "org.hibernate" % "hibernate-ehcache" % "5.2.11.Final", 
     "org.hibernate.javax.persistence" % "hibernate-jpa-2.1-api" % "1.0.0.Final", 
     "com.google.code.gson" % "gson" % "2.1", 
     "com.oracle" % "ojdbc8" % "12.2.0.1", 
     "commons-io" % "commons-io" % "2.4", 
     "commons-lang" % "commons-lang" % "2.6", 
     "org.apache.commons" % "commons-collections4" % "4.1", 
     "org.hibernate" % "hibernate-core" % "5.2.10.Final", 
     "org.apache.tika" % "tika-core" % "1.13", 
     "org.apache.tika" % "tika-parsers" % "1.13" exclude("com.google.code.gson", "gson"), 
     "org.apache.tika" % "tika-xmp" % "1.13", 
     "org.jsoup" % "jsoup" % "1.10.1", 
     "com.thoughtworks.xstream" % "xstream" % "1.3" 
    ) 
) 

lazy val search = (project in file("modules/search")).enablePlugins(PlayJava).dependsOn(common).settings(commonSettings) 
lazy val channel = (project in file("modules/channel")).enablePlugins(PlayJava).dependsOn(common, search).settings(commonSettings) 
lazy val recommend = (project in file("modules/recommend")).enablePlugins(PlayJava).dependsOn(common, search).settings(commonSettings) 

lazy val root = (project in file(".")) 
    .enablePlugins(PlayJava) 
    .dependsOn(channel, recommend) 
    .aggregate(channel, recommend) 
    .settings(commonSettings) 

私はsbt runsbt distの違いはあるのだろうか?

マルチモジュールSBTプロジェクトを展開する一般的で推奨される方法は何ですか?

答えて

0

これはクラスパスの問題です。あなたはbuild.sbtに次のコードを配置する必要があります。プロジェクトのデフォルトのリソースによって

PlayKeys.externalizeResources := false 

sbt distによって作成されたjarファイルにパッケージ化されていません。

関連する問題