【问题标题】:Auto-Compile Bash Script not working自动编译 Bash 脚本不起作用
【发布时间】:2013-11-19 16:32:28
【问题描述】:

简单地说,我想通过命令行手动编译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

【问题讨论】:

    标签: java bash shell scripting terminal


    【解决方案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的文件夹中,没有任何包结构吗?你确定他们不需要更多的类路径信息来编译吗?

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

      • jar命令也需要参数,比如cf或cvf,除非所有源文件都在默认包中,否则通配符不起作用..
      猜你喜欢
      • 2016-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多