我正在尝试将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
答案 0 :(得分:3)
您可以使用几个选项来编译自由运行时。
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
组下。
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'