Java 如何使用Gradle构建依赖于另一个JAR的JAR

Java 如何使用Gradle构建依赖于另一个JAR的JAR,java,eclipse,jar,gradle,build.gradle,Java,Eclipse,Jar,Gradle,Build.gradle,我有一个Eclipse工作区,其中一个已声明的工作集配置为具有多个项目。一些用于生成JAR文件,另一些是使用这些JAR文件的web应用程序。在我的体系结构中,我有一个JAR,它将由域核心服务组成,另一个JAR依赖于第一个JAR,它将由更高级别的服务组成。最后,我将介绍一些使用这两个JAR的web应用程序 第一个JAR项目是使用Gradle构建的,基于以下脚本 apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'applicati

我有一个Eclipse工作区,其中一个已声明的工作集配置为具有多个项目。一些用于生成JAR文件,另一些是使用这些JAR文件的web应用程序。在我的体系结构中,我有一个JAR,它将由域核心服务组成,另一个JAR依赖于第一个JAR,它将由更高级别的服务组成。最后,我将介绍一些使用这两个JAR的web应用程序

第一个JAR项目是使用Gradle构建的,基于以下脚本

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'application'

repositories {
    mavenLocal()
    mavenCentral();
}

jar {
    baseName = 'br.ufpr.unidades.dominio'
    version = '0.1.0'
}

dependencies {
    compile 'org.hibernate:hibernate-core:4.3.7.Final'
}

task wrapper(type: Wrapper) {
    gradleVersion = '1.11'
}
正如任何人都可以看到的,它是一个非常简单的
build.gradle
文件,构建过程可以很好地使用它。预期的JAR文件在预期的目标文件夹中生成

现在,下面是第二个JAR的构建脚本:

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'application'

repositories {
    mavenLocal()
    mavenCentral()
}

jar {
    baseName = 'br.ufpr.unidades.dominio.hibernate'
    version = '0.1.0'
}

dependencies {
    runtime fileTree(dir: '../dominio/build/libs', include: '*.jar')
    compile 'org.hibernate:hibernate-core:4.3.7.Final'
}

task wrapper(type: Wrapper) {
    gradleVersion = '1.11'
}
第二个文件与第一个文件非常相似,只是它依赖于生成的JAR:

    runtime fileTree(dir: '../dominio/build/libs', include: '*.jar')
Eclipse没有显示任何问题,但当我尝试构建第二个JAR项目时,我收到了许多“未找到类”错误消息,如下所示:

[sts] -----------------------------------------------------
[sts] Starting Gradle build for the following tasks: 
[sts]      build
[sts] -----------------------------------------------------
:compileJava
D:\Users\alex\Documents\Eclipse\workspace\unidades\dominio.hibernate\src\main\java\dominio\hibernate\HibernateCargoRepository.java:7: error: package unidades.dominio does not exist
import unidades.dominio.Cargo;
消息很清楚:我正在导入一个在构建过程中找不到的包,因此在我的代码中无法引用这样一个包所拥有的类。这样的包在第一个完全生成的JAR文件中声明。它也在Eclipse项目中的
引用库
项下可见,因此Gradle能够在设计时找到它来引用它,但不能构建第二个JAR

毕竟,我怀疑这是一个依赖关系管理问题,但我看不出是哪一个问题以及如何解决它


提前谢谢

您是否在第二个项目中使用了dominio/build/libs下jar中的类?如果是这样,这应该是一个
编译
依赖项。我还建议设置一个
multimodule
gradle项目。是文档。

您是否在第二个项目中使用了
dominio/build/libs
下jar中的类?如果是这样,这应该是一个
编译
依赖项。我还建议设置一个多模块gradle项目。@Opal:好吧,这是与专家交谈的一件好事!非常感谢,你的建议解决了这个问题!请将其添加为答案,我会将其标记为解决方案!