【ANT问题】高手请指教

winagain 2006-09-08 10:15:04
关于ANT的两个问题,希望高手能够指教
1.通过ANT能否设置环境变量?该变量将在JAVA代码中读取?
例如:通过ANT设置环境变量key=value ,然后ANT编译打包发布运行JAVA程序,该JAVA程序中用读取并利用key的值即value?

2.如何通过ANT把一个文件夹下的的文件名局部改名?
例如:一个文件夹下有三个文件A123B.txt、B123C.txt、C123D.txt 如何能够将这三个文件重命名为A321B.txt、B321C.txt、C321D.txt?
...全文
176 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
winagain 2006-09-13
  • 打赏
  • 举报
回复
thank you very much
公司同事给出下面的答案:
1。无解
2。<project name="helloapp" default="clean" basedir=".">
<property file="build.properties"/>

<target name="clean">
<delete dir="${dest.dir}"/>
</target>

<target name="copy" depends="clean">
<copy todir="${dest.dir}">
<fileset dir="${src.dir}"/>
<mapper type="regexp" from="^(.*)1701(.*)$" to="\11802\2"/>
</copy>
</target>

</project>
maquan 2006-09-08
  • 打赏
  • 举报
回复
对不起,上面的脚本中漏掉了关键的一句:

<fileset id="setup_fs" casesensitive="false">
<include name="*.txt"/>
</fileset>

<target name="something">
<script language="javascript">
<![CDATA[
echo = project.createTask("echo");
rootDir = project.getProperty("build.root");
echo.setMessage("Processing " + rootDir + " ...");
echo.execute();

importClass(java.io.File); // 刚才漏掉了这句

setup_fs.setDir(new File(rootDir));
ds = setup_fs.getDirectoryScanner(project);
srcFiles = ds.getIncludedFiles();
for (i=0; i < srcFiles.length; i++) {
echo.setMessage("rename " + srcFiles[i] + " to ...\r\n");
echo.execute();
// 这里可以做你的 rename 操作
// ……
}
]]>
</script>
</target>
maquan 2006-09-08
  • 打赏
  • 举报
回复
关于第二个问题,其实 ANT 的扩展能力是*很强*的,强到可以使用 JavaScript 脚本,脚本中又可以使用 Java 程序,也就是说,无所不能了 :)

提供一段脚本给你参考(需要 Ant 1.6,可能还需要一些扩展包,总之要让下面的代码跑起来并不是很容易,但跑起来以后就什么都简单了):

<fileset id="setup_fs" casesensitive="false">
<include name="*.txt"/>
</fileset>

<target name="something">
<script language="javascript">
<![CDATA[
echo = project.createTask("echo");
rootDir = project.getProperty("build.root");
echo.setMessage("Processing " + rootDir + " ...");
echo.execute();

setup_fs.setDir(new File(rootDir));
ds = setup_fs.getDirectoryScanner(project);
srcFiles = ds.getIncludedFiles();
for (i=0; i < srcFiles.length; i++) {
echo.setMessage("rename " + srcFiles[i] + " to ...\r\n");
echo.execute();
// 这里可以做你的 rename 操作
// ……
}
]]>
</script>
</target>
maquan 2006-09-08
  • 打赏
  • 举报
回复
关于第一个问题,楼主没说清楚“运行 JAVA 程序”是由 ANT 来启动的吗?如果是,当然就简单了,可以加个启动参数 -D 就解决了。如果不是,那就看你的 JAVA 程序能从什么地方取属性值了(启动参数、环境变量、配置文件……),本质上跟 ANT 是无关的,但可以让 ANT 替你生成个配置文件什么的。
zh__ua 2006-09-08
  • 打赏
  • 举报
回复
问题1,ant只是一个打包等做一些预处理的工具,你程序运行时和ant无关,所以属性的设置和运行时是无关的,也就是说,如果不用属性文件等保存,你运行时无法读到ant设置的东西
问题2,这个好像只能自己编程改吧,没用过它的批量改名,你试一下用ant运行dos命令ren a*.abc b*.abc看看,不知道好不好用,没试过
lianhg 2006-09-08
  • 打赏
  • 举报
回复
问题2
-- <copy file="src/Test.java" tofile = "src/TestCopy.java"/> 然后 <delete dir="src/Test.java" />

或者 <move file="src/Test.java" tofile = "src/TestCopy.java"/>
winagain 2006-09-08
  • 打赏
  • 举报
回复
1没有正面解决该问题
2说的比较含糊
lianhg 2006-09-08
  • 打赏
  • 举报
回复
问题1
-- 用property 文件代替不可以吗?

问题2
-- 先 copy 然后 delete
wshuangminlg 2006-09-08
  • 打赏
  • 举报
回复
帮顶

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧