我正在尝试围绕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())
}
}
}
答案 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运行时以解决依赖性。