简单地说,我想通过命令行手动编译Java文件,但不想为每个目录执行此操作。我试着编写这个脚本,但它似乎不起作用。
CUR=$PWD # save workspace directory to return
for line in `find -type d -name src` # find and loop through src paths
do
eval cd $line # go to src
eval javac *.java
eval jar *.class # I need to have a jar for my project
eval mv ../bin/
cd $CUR
done
答案 0 :(得分:1)
我认为您不需要在该脚本中使用eval
。
但有一个问题可能是您的源目录并非都被称为src
(或者它们是什么?)您的目录结构是什么样的?
此外,您可能需要为您的项目使用一个jar,而不是多个jar,因此该位也无法正常工作。
您应该考虑使用真正的Java构建工具,如Ant或Maven;十多年前他们解决了这个问题。
答案 1 :(得分:1)
对现有脚本的一些改进:
for line in $(find -type d -name src) # find and loop through src paths
do
(
cd $line # go to src
javac *.java
jar *.class # I need to have a jar for my project
mv ../bin/
)
done
使用括号在子shell中执行内部部分并避免cd
问题。我也认为eval
没有理由。
您确定所有的java文件都直接位于名为src
的文件夹中,没有任何包结构吗?你确定他们不需要进一步的类路径信息来编译吗?
究竟是什么问题,让你觉得它不起作用?
有充分的理由,为什么你不使用成绩,专家或蚂蚁来建立你的项目?
(可以随意更新问题作为对问题的回答。)