我的网络应用程序使用两个包含api和第二个Web部件的项目构建。在Eclipse中,我可以在project-web中使用project-api中的类,但是在部署中我有例外:
Caused by: java.lang.ClassNotFoundException: project.api.TestApi
这是我的主要build.gradle文件:
sourceCompatibility = 1.7
subprojects {
apply plugin: 'java'
}
这是来自api的build.gradle:
apply plugin: 'java'
apply plugin: 'eclipse'
repositories {
mavenCentral()
}
dependencies {
}
这是我在web上的build.gradle的一部分:
dependencies {
compile project(':project-api')
...
}
如果我去看看网络应用程序库,我看不到像project-api.jar这样的东西。我做错了吗? 更新: 这只是在日食中才有问题。如果我运行gradlew war并将其手动部署到tomcat,我可以在没有任何发布的情况下部署它。 project-api.jar包含在战争中。我已经尝试过几次运行
`gradlew clean cleanEclipse eclipse`
但它没有帮助。我也尝试在eclipse中重新导入项目,但仍然是相同的。 编辑: 这个项目是一个spring mvc应用程序,我刚刚发现当我从gradle构建war时,我能够手动部署war而不会出现任何错误。只有在尝试通过eclipse进行部署时才会出现问题。 编辑:这是settings.gradle
rootProject.name = 'project'
include 'project-test'
include 'project-web'
include 'project-api'
答案 0 :(得分:0)
您需要将可部署项目的依赖项转换为"分面项目"。
项目属性 - >项目方面 - >转换为分面形式...
然后将每个依赖项标记为"实用程序模块"。