0

简单来说就是想通过命令行手动编译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
4

2 回答 2

1

我认为您根本不需要eval在该脚本中使用。

但是一个问题可能是您的源目录并非全部被调用src(或者它们是?)您的目录结构是什么样的?

此外,您的项目可能需要一个 jar,而不是多个 jar,因此该位也不起作用。

您可能应该考虑使用真正的 Java 构建工具,例如 Ant 或 Maven;他们在十多年前解决了这个问题。

于 2013-11-07T21:01:50.927 回答
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

使用括号在子外壳中执行内部部分并避免出现cd问题。我也看不出有什么理由eval

你确定你所有的java文件都直接在一个src没有任何包结构的文件夹中吗?你确定他们不需要更多的类路径信息来编译吗?

究竟是什么问题,让您认为它不起作用?

是否有充分的理由,为什么您不使用grade、maven 或ant 来构建您的项目?

(随意简单地更新问题作为对问题的回应。)

于 2013-11-07T21:20:36.793 回答