是否可以扩展ant构建文件中的现有路径标记?例如,我想扩展:
<path id="project.classpath">
<pathelement path="build/classes" />
</path>
使用新的path=module/lib
。所以结果相当于:
<path id="project.classpath">
<pathelement path="build/classes" />
<pathelement path="module/lib" />
</path>
答案 0 :(得分:0)
如果你尝试这样的话,你不能直接扩展现有的路径:
SELECT ProdID,
Date,
(SELECT Price
FROM PRICE_TABLE P
WHERE P.ProdID = S.ProdID
AND P.Date = (SELECT MIN(P2.Date)
FROM PRICE_TABLE P2
WHERE P2.ProdId = P.ProdID
AND P2.Date >= S.Date))
FROM SALES_HISTORY S;
由于您正在尝试读取并同时设置路径的“圆形”,它将失败。
你可以通过添加额外的步骤来打破圆圈,从而做到你想要的。在每次设置路径之前,将当前值存储在<string>
资源中:
<path id="project.classpath">
<pathelement path="build/classes" />
</path>
<path id="project.classpath">
<pathelement path="${ant.refid:project.classpath}" />
<pathelement path="module1/lib" />
</path>
运行时会产生类似的结果:
<path id="cp">
<pathelement path="build/classes" />
</path>
<echo message="${ant.refid:cp}" />
<string id="cps" value="${toString:cp}" />
<path id="cp">
<pathelement path="${ant.refid:cps}" />
<pathelement path="module1/lib" />
</path>
<echo message="${ant.refid:cp}" />
<string id="cps" value="${toString:cp}" />
<path id="cp">
<pathelement path="${ant.refid:cps}" />
<pathelement path="module2/lib" />
</path>
<echo message="${ant.refid:cp}" />
您每次都会将[echo] /ant/path/build/classes
[echo] /ant/path/build/classes:/ant/path/module1/lib
[echo] /ant/path/build/classes:/ant/path/module1/lib:/ant/path/module2/lib
重新分配到不同的路径。通常这是一个坏主意,因为你不能确定在构建中的每个点使用了什么路径:所以要小心使用。