无法让jettyRun在Gradle中工作

时间:2012-11-18 11:09:13

标签: jetty classpath gradle

我有一个WEBAPP MULTI PROJECT Gradle构建,具有以下结构。我也在使用SPRING FRAMEWORK。我无法让webapp在Jetty中运行,因为找不到我的bean文件(dao-beans.xml)。如果我将bean文件复制到webapp build目录,那么就会找到它们,但是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

Presenter的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

1 个答案:

答案 0 :(得分: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,但两种形式都应该有效)