Gradle多个项目在部署时构建ClassNotFound

时间:2014-02-14 11:59:50

标签: gradle build.gradle

我的网络应用程序使用两个包含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'

1 个答案:

答案 0 :(得分:0)

您需要将可部署项目的依赖项转换为"分面项目"。

项目属性 - >项目方面 - >转换为分面形式...

然后将每个依赖项标记为"实用程序模块"。