3

以下の構造のWEBAPPMULTIPROJECTGradleビルドがあります。SPRINGFRAMEWORKも使用しています。Beanファイル(dao-beans.xml)が見つからないため、WebアプリケーションをJettyで実行できません。Beanファイルをwebappビルドディレクトリにコピーすると、それらは見つかりますが、Springはクラスパスでクラスを見つけることができないため、クラスのインスタンス化に失敗します。私は何が間違っているのですか?

+-- build.gradle
+-- dao-impl
¦   +-- src
¦       +-- main
¦       ¦   +-- java
¦       ¦   +-- resources
¦       ¦       +-- dao-beans.xml
¦       +-- test
¦           +-- java
+-- gradle.properties
+-- presenter
¦   +-- build.gradle
¦   +-- src
¦       +-- main
¦       ¦   +-- java
¦       ¦   +-- resources
¦       ¦   ¦   +-- beans.xml
¦       ¦   +-- webapp
¦       ¦       +-- WEB-INF
¦       ¦           +-- web.xml
¦       +-- test
¦           +-- java
+-- settings.gradle

プレゼンターのbuild.gradle:

apply plugin: "jetty"
apply plugin: "war"

jettyRun {
    httpPort = 8080
    scanIntervalSeconds = 3
}

戦争の構造:

├── META-INF
│   └── MANIFEST.MF
└── WEB-INF
    ├── classes
    │   ├── beans.xml
    │   ├── *.classes
    │   └── logback.xml
    ├── lib
    │   ├── *.jar
    └── web.xml
4

1 に答える 1

1

'dao-impl'を独立したJavaプロジェクトにする必要があります(したがって、トップレベルのプロジェクトがそれを構築します)。

新しいファイルdao-impl/build.gradle

apply plugin: "java"

サブプロジェクトについてトップレベルのプロジェクトに指示します。

次に、既存のpresenter / build.gradleファイルに、他のプロジェクトへの依存関係を追加します。

dependencies {
  ...
  compile project(':dao-impl').sourceSets.main.output
}

これにより、JARが通常の場所WEB-INF / lib / dao-impl-xyzjarのデプロイされたJettyで発行されるはずです(可能であれば.sourceSets.main.outputを廃止する方が良いかもしれませんが、両方の形式で行う必要があります仕事)

于 2012-11-18T14:14:42.407 に答える