我有一个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
答案 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,但两种形式都应该有效)