Gradle没有在eclipse项目中找到服务器运行时

时间:2016-08-07 16:30:40

标签: java java-ee gradle

我正在尝试将Eclipse JavaEE项目转换为gradle项目。 我的项目中的代码使用来自WebSphere Liberty服务器运行时的jar文件。

我已将服务器运行时添加到类路径中,编辑器会识别它并且不会抛出任何错误。当我尝试用gradle构建项目时,我得到100多个错误,说它找不到服务器运行时内的任何类。

如何告诉gradle在构建阶段使用服务器运行时?

  

的build.gradle

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

sourceCompatibility = '1.7'
targetCompatibility = '1.7'

repositories {
    jcenter()
    mavenLocal()
}

dependencies {
    compile 'com.squareup.okhttp3:okhttp:3.4.1'
    compile 'com.company.jsend:JSend:1.0'
    compile 'com.company.network:Network:1.0'
}
  

settings.gradle

rootProject.name = 'ApplicationName'

服务器代码位于src>主要>的java

2 个答案:

答案 0 :(得分:3)

您可以使用几个选项来编译自由运行时。

在maven central中找到您需要的软件包,并将它们添加为providedCompile个依赖项。

不是直接从已安装的Liberty运行时获取API,而是从Maven central获取它们。这是首选,因为它允许您在任何地方编译代码,而无需安装自由运行时,这意味着您的构建类路径不依赖于您在自由运行时安装的功能。

E.g。

dependencies {
    providedCompile 'javax:javaee-api:7.0' // All Java EE 7 APIs
    providedCompile 'javax.ejb:javax.ejb-api:3.2' // Just the EJB 3.2 APIs
    providedCompile 'com.ibm.websphere.appserver.api:com.ibm.websphere.appserver.api.security:1.2.13' // Liberty security APIs
}

您通常会在javax.something组中找到标准化的Java EE API。如果您需要自由API,他们将在com.ibm.websphere.appserver.api组下。

将来自本地自由运行时的jar包含为providedCompile依赖项。

这里我们告诉Gradle您的自由运行时的安装位置,并要求它在构建类路径中包含运行时的API jar。

E.g。

dependencies {
    providedCompile fileTree(dir: "${liberty.root}/dev/api/spec")
}

请注意,在这种情况下,可用的API取决于您安装的功能。

此方法要求您通过在运行Gradle时设置属性liberty.root来告诉Gradle安装了自由运行时。

答案 1 :(得分:1)

使用Gradle开发Java EE应用程序时,练习是使用javaee-api作为提供的编译(如果是war)或compileOnly(我认为Gradle 2.13及更高版本)

以下是示例

providedCompile' javax:javaee-api:7.0'