2014-11-05 347 views
1

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

第一个JAR项目建设有摇篮的基础上,下面的脚本

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' 
} 

因为任何人都可以看到,it's一个非常简单的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项目时,我收到许多Class未找到的错误消息,如下所示:

[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。

毕竟,我怀疑这是一个依赖管理问题,但我不知道它是什么以及如何解决它。

在此先感谢!

+0

您是否在第二个项目中使用'dominio/build/libs'下的jar中的类?如果是这样,这应该是一个“编译”依赖。我还建议设置一个multimodule gradle项目。 – Opal 2014-11-05 10:08:26

+0

@Opal:好吧,这是与专家交流的好消息!非常感谢你,你的建议只是解决了问题!请添加它作为答案,我会将其标记为解决方案! – AlexSC 2014-11-05 10:20:30

回答

1

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

相关问题