"macro not found: _after_build" 使用 IntelliJ IDEA 构建 hybris 的 Ant 错误

"macro not found: _after_build" Ant error building hybris with IntelliJ IDEA

我正在尝试让内部 ant 工具与 hybris 电子商务套件一起使用。 当我从控制台调用 ant 时,它工作正常。

使用 IntelliJ 提供的 Ant 工具,在调用 "all" 目标时收到以下错误消息:

F:\pathtohybrisinstall\bin\platform\resources\ant\util.xml:130: macro not found: _after_build
at de.hybris.ant.taskdefs.CallMacro.execute(CallMacro.java:58)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
at sun.reflect.GeneratedMethodAccessor80.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at net.sf.antcontrib.logic.TryCatchTask.execute(TryCatchTask.java:207)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:396)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:435)
at org.apache.tools.ant.Target.performTasks(Target.java:456)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
at org.apache.tools.ant.Project.executeTarget(Project.java:1364)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
at org.apache.tools.ant.Main.runBuild(Main.java:851)
at org.apache.tools.ant.Main.startAnt(Main.java:235)
at org.apache.tools.ant.Main.start(Main.java:198)
at org.apache.tools.ant.Main.main(Main.java:286)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.intellij.rt.ant.execution.AntMain2.main(AntMain2.java:30)

根据 IntelliJ IDEA Help center 的描述,Ant 集成随 IntelliJ IDEA 一起提供,这意味着,您 运行 通过控制台使用的 Ant 是不一样的,那个IDE 使用。

所以异常可能是版本不兼容导致的。您可以在执行选项卡上的构建文件属性中更改 IDE 使用的 Ant 分布。只需提供您在控制台中使用的 Ant 发行版即可。

根据您随后的评论,我认为 extname 参数设置不正确。

您只是从 IDE 调用 ant build 吗?我会看一下用于 Eclipse 集成的 codegen.xml。在调用 gensource 之前导入了一些设置。其中之一是导入包含 trycatch 目标的 contrib 库,该目标可防止出现您在此处看到的错误。也许这有关,但我不确定。

基本上默认支持Eclipse

intellij IDEA 不支持在 hybris 构建中使用的 ant-contrib try/catch 块。 intellij 2017.2 中有多个对 ant 的修复。 当您使用 Hybris Integration 插件导入您的 hybris 项目时,它会为您设置所有与 Ant 相关的设置。

您可以通过单击 Settings/Plugins 对话框中的 "Browse Repositories" 按钮直接从 repository 安装到您的 IDE。