我有一个属性文件,其中包含来自不同路径的jar列表,像这样
/gwt/X/2.1.0/gwt-servlet.jar
/gwt/X/2.1.0/gwt-user.jar
/gwt/X/2.1.0/gwt-dev.jar
/gwt/X/2.1.0/gwt-soyc-vis.jar
/log4j/X/1.2.15/log4j-1.2.15.jar
/GWT_LOG/X/3.0.3/gwt-log-3.0.3.jar
/GWT_MATH/X/2.1/gwt-math-2.1.jar
/GWT_MATH/X/2.1/gwt-math-server-2.1.jar
/GWT_Commons_Logging/X/0.3/GWT-commons-logging/gwt-commons-logging-0.3.jar
/GWT_Commons_Logging/X/0.3/GWT-commons-logging/gwt-commons-logging-service-0.3.jar
我在这个列表中有大约1000个这样的罐子。我想删除jar名称前的相对路径并将jar名称输出到新文件中,例如
gwt-servlet.jar
gwt-user.jar
gwt-dev.jar
gwt-soyc-vis.jar
log4j-1.2.15.jar
gwt-log-3.0.3.jar
gwt-math-2.1.jar
gwt-math-server-2.1.jar
gwt-commons-logging-0.3.jar
gwt-commons-logging-service-0.3.jar
这不是一个一次性的活动,所以我想在我的build.xml中创建一个目标或任务以供日常使用。
<replaceregexp file="file.txt" match="[^ ]*/" replace="" byline="true" flags="g"/>
Ant并不适合这样的任务。用Java编写一个简单的Ant Task(或者一个小的Java程序)可能要简单得多;只需创建File
对象并调用getName()
来获取最后一个路径元素)。
但是如果你必须这样做:script
和scriptdef
可能是你的朋友(前提是你的Ant版本是最近的;文档中提到了1.6.3)。您可以从这些脚本调用任何Java方法。