如何为Liferay portlet项目添加ECJ到Gradle ant.importBuild类路径?

时间:2013-10-17 09:40:39

标签: liferay gradle

我正在尝试围绕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())
                                         }
               }
}

2 个答案:

答案 0 :(得分:2)

我找到了一个解决方案并没有解决gradle和ECJ的原始问题,所以我会把问题保持开放。

解决方法调用系统ant。这显然假设你安装了蚂蚁并且在你的道路上。

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

并从任务中调用它

antExec('deploy')

答案 1 :(得分:0)

达米恩,

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

如果您正在使用您喜欢的任何IDE,请将此jar添加到您的ant运行时以解决依赖性。