【问题标题】:Gradle multiple project build ClassNotFound on deployGradle 多个项目在部署时构建 ClassNotFound
【发布时间】:2014-02-14 11:59:49
【问题描述】:

我的 Web 应用程序是使用两个项目构建的,其中一个项目包含 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')
...
}

如果我去查看 web 应用程序库,我看不到 project-api.jar 之类的东西。我在做什么错? 更新: 仅在日食中是问题。如果我运行 gradlew war 并将其手动部署到 tomcat,我可以在不发布任何内容的情况下部署它。 project-api.jar 包含在战争中。我已经尝试过几次了

`gradlew clean cleanEclipse eclipse` 

但这无济于事。我也尝试在 Eclipse 中重新导入项目,但还是一样。 编辑: 这个项目是一个 spring mvc 应用程序,我刚刚发现当我从 gradle 构建战争时,我能够手动部署战争而没有任何错误。问题仅在尝试通过 eclipse 部署时出现。 编辑:这里是 settings.gradle

rootProject.name = 'project'
include 'project-test'
include 'project-web'
include 'project-api'

【问题讨论】:

  • 我不知道 android 能不能做 1.7(几个月前我试过的时候还不能)。你把它改成1.6是什么?
  • 我刚刚更新了帖子。我对问题不够具体。我的错。
  • 你能发布你的 settings.gradle 吗?
  • 添加了 settings.gradle
  • 你的 web build.gradle 里面有 apply plugin: 'eclipse' 吗?

标签: gradle build.gradle


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-26
    • 2018-06-10
    • 1970-01-01
    • 1970-01-01
    • 2020-12-05
    • 2019-03-17
    • 1970-01-01
    • 2012-06-24
    相关资源
    最近更新 更多