这是我的构建文件:
<project name="ant-in-eclipse" basedir="."
xmlns:ant4eclipse="antlib:org.ant4eclipse"
xmlns:antcontrib="antlib:net.sf.antcontrib" default="compileAndJar" >
<taskdef uri="antlib:net.sf.antcontrib"
resource="net/sf/antcontrib/antlib.xml" />
<!-- define ant4eclipse tasks -->
<taskdef uri="antlib:org.ant4eclipse"
resource="org/ant4eclipse/ant/antlib.xml" />
<import file="/data/temp/ANT/ANT4/macros/a4e-jdt-macros.xml"/>
<target name="compileAndJar">
<macrodef name="build">
<attribute name="workspaceDirectory" default="deploy" />
<sequential>
<echo>Hi</echo>
</sequential>
</macrodef>
<buildJdtProject workspaceDirectory="${workspaceDirectory}"
projectname="wfn-common.jar">
<finish>
<jar destfile="deploy/wfn-common.jar">
<ant4eclipse:jdtProjectFileSet destination="."
projectname="${buildJdtProject.project.name}" />
</jar>
</finish>
</buildJdtProject>
</target>
</project>我得到了这个错误
/data/temp/ANT/PTO_Build/WFN_Framework/wfn-common/sample.xml:21: The following error occurred while executing this line:
/data/temp/ANT/ANT4/macros/a4e-jdt-macros.xml:105: ant4eclipse:executeJdtProject doesn't support the "workspaceid" attribute
at org.apache.tools.ant.RuntimeConfigurable.maybeConfigure(RuntimeConfigurable.java:396)
at org.apache.tools.ant.RuntimeConfigurable.maybeConfigure(RuntimeConfigurable.java:344)
at org.apache.tools.ant.Task.maybeConfigure(Task.java:202)
at org.apache.tools.ant.UnknownElement.configure(UnknownElement.java:196)
at org.apache.tools.ant.UnknownElement.maybeConfigure(UnknownElement.java:163)
at org.apache.tools.ant.Task.perform(Task.java:347)
at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:600)
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:398)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:600)
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:390)
at org.apache.tools.ant.Target.performTasks(Target.java:411)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
at org.apache.tools.ant.Project.executeTarget(Project.java:1368)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
at org.apache.tools.ant.Main.runBuild(Main.java:809)
at org.apache.tools.ant.Main.startAnt(Main.java:217)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
Caused by: ant4eclipse:executeJdtProject doesn't support the "workspaceid" attribute.
at org.ant4eclipse.ant.jdt.containerargs.JdtClasspathContainerArgumentDelegate.setDynamicAttribute(JdtClasspathContainerArgumentDelegate.java:70)
at org.ant4eclipse.ant.jdt.AbstractExecuteJdtProjectTask.setDynamicAttribute(AbstractExecuteJdtProjectTask.java:63)
at org.apache.tools.ant.IntrospectionHelper.setAttribute(IntrospectionHelper.java:394)
at org.apache.tools.ant.RuntimeConfigurable.maybeConfigure(RuntimeConfigurable.java:388)
... 31 more有谁能帮帮我吗?
发布于 2011-06-15 19:26:40
错误在您导入的文件中:
<导入file="/data/temp/ANT/ANT4/macros/a4e-jdt-macros.xml"/>
我猜您的buildJDTProject目标是在那里定义的,并且它的定义方式有一个错误。
/data/temp/ANT/ANT4/macros/a4e-jdt-macros.xml失败的地方
我猜它会是buildJDTProject的目标。我猜目标包含workspaceid属性,这似乎是非法的。
您可以删除该属性,或者弄清楚为什么要将其放在第一位。也许它适用于不同版本的ant jdt库?
还有两个猜测(我对ant4eclipse BTW不熟悉)。关于ant4eclipse的buildJdtProject任务...
这份文件说
必须指定'workspaceDirectory‘或'workspaceId’
您将在构建脚本的目标中传递workspaceDirectory。可能默认情况下在该导入文件的宏中指定了workspaceId。如果是这样的话,也许你最终同时定义了workspaceDirectory和workspaceId,这是非法的。然而,这个想法与您得到的错误消息不匹配。
或者,也许ant4eclipse对属性名称区分大小写。这对于Ant来说并不常见,它通常是不区分大小写的。但是ant4eclipse文档给出的属性名为workspaceId,您的错误消息显示workspaceid不受支持。因此,可以尝试更改导入文件中的大小写。
https://stackoverflow.com/questions/6356427
复制相似问题