2

我正在尝试围绕 Liferay portlet Ant Build 创建一个 gradle 构建。我正在使用 Gradle 进行依赖管理和管理其他非 liferay 部分。我需要从 Gradle 调用一些 Liferay Ant 构建。我正在尝试使用 ant.importBuild 导入 Ant build.xml。在此过程中,Gradle 会引发异常,因为 Ant 构建会查找不在类路径中的 ECJ。

例如,我查看了 Liferay Gradle 构建以及如何将 ECJ 添加到 ant.importBuild 类路径,如下所示(这仍然会引发相同的异常)。

Task cannot continue because ECJ is not installed.
ECJ was automatically installed. Please rerun your task.
at org.apache.tools.ant.ProjectHelper.addLocationToBuildException(ProjectHelper.java:568)
at org.apache.tools.ant.taskdefs.ImportTask.importResource(ImportTask.java:239)

有人对此有解决方案吗?我是新手。

apply plugin: 'java'
ant.importBuild 'build.xml' 
configurations { jdt }
dependencies { jdt "org.eclipse.jdt:ecj:3.6.1" }
compileJava {
       doFirst {
                 ClassLoader antClassLoader =org.apache.tools.ant.Project.class.classLoader
                 configurations.jdt.each { File f ->
                                          antClassLoader.addURL(f.toURI().toURL())
                                         }
               }
}
4

2 回答 2

2

我找到了一个不能解决 gradle 和 ECJ 的原始问题的解决方法,所以我会留下这个问题。

解决方法调用系统蚂蚁。这显然假定您已安装 ant 并在您的路径上。

def antExec(target){
  tasks.create(name: "ant$target", type: Exec) {
       executable 'ant'
       args  target
  }
  tasks."ant$target".execute()
}

并从任务中调用它

antExec('deploy')
于 2013-10-17T10:33:17.043 回答
0

达米安,

要为 liferay 项目运行 ant 脚本,您需要解决 ecj 依赖项。您可以在 liferay-tomcat/lib 目录中找到 ecj*.jar 复制该 jar 并将其放在 ant-home/lib (安装目录)

如果您使用偏好中的任何 IDE,请将此 jar 添加到您的 ant 运行时以解决依赖关系。

于 2013-10-18T04:51:19.037 回答