gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 06:26:23 25 4
gpt4 key购买 nike

我有一个 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 项目中的 Referenced Libraries 项下也可见,因此 Gradle 能够找到它并在设计时引用它,但无法构建第二个 JAR。

毕竟,我怀疑这是一个依赖管理问题,但我看不出它是什么以及如何修复它。

提前致谢!

最佳答案

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

关于java - 如何使用 Gradle 构建依赖于另一个 JAR 的 JAR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26754311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com