Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jetty Can';我不能让杰特伦在格拉德尔工作_Jetty_Classpath_Gradle - Fatal编程技术网

Jetty Can';我不能让杰特伦在格拉德尔工作

Jetty Can';我不能让杰特伦在格拉德尔工作,jetty,classpath,gradle,Jetty,Classpath,Gradle,我有一个WEBAPP多项目Gradle构建,结构如下。我也在使用SPRING框架。由于找不到我的bean文件(daobeans.xml),我无法让webapp在Jetty中运行。如果我将bean文件复制到webapp build dir,就会找到它们,但是Spring无法实例化我的类,因为它无法在类路径上找到类。我做错了什么 +-- build.gradle +-- dao-impl ¦   +-- src ¦   +-- main ¦   ¦   +-- java ¦  

我有一个WEBAPP多项目Gradle构建,结构如下。我也在使用SPRING框架。由于找不到我的bean文件(daobeans.xml),我无法让webapp在Jetty中运行。如果我将bean文件复制到webapp build dir,就会找到它们,但是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

您需要使您的“dao impl”成为一个独立的Java项目(因此顶级项目会构建它)

新文件dao impl/build.gradle

apply plugin: "java"
就子项目向顶层项目提供指导

然后在现有presenter/build.gradle文件中添加对该其他项目的依赖项:

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

这将导致JAR在部署的Jetty中的通常位置WEB-INF/lib/dao-impl-x.y.z.JAR中发出(如果可能的话,最好去掉.sourceset.main.output,但这两个表单都应该工作)

以及“:presenter”项目如何依赖“:dao impl”项目?您如何在presenter gradle配置中声明这一点?请显示演示者项目在依赖项方面的更多gradle配置。这个答案可能会有帮助(但根据运行时依赖项的需要进行修改,而不仅仅是测试)