使用 xargs 编译 Java 文件列表

发布于 2024-12-09 18:51:04 字数 354 浏览 0 评论 0原文

我有一个包含几个 java 文件的目录树。示例:

top
 |-- src1
 |    |--- folder A
 |    |--- folder B
 |-- src2
 |    |--- folder A
 |    |--- folder B
...

我想编译这些文件夹中的所有文件,并将编译后的文件相应地移动到相应 src< 中的 文件夹 A-bin文件夹 B-bin /代码> 文件夹。我读到可以使用 xargs 实用程序来完成此操作,但我无法从手动输入中获得正面或反面。

有人能给我指一条路吗?

I have a directory tree with several java files. Example:

top
 |-- src1
 |    |--- folder A
 |    |--- folder B
 |-- src2
 |    |--- folder A
 |    |--- folder B
...

I want to compile all the files in those folders and move the compiled files to folder A-binor folder B-bin accordingly in the respective src folder. I have read that I can do this with the xargs utility, but I can't make heads or tails from the manual entry.

Can some one point me a way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

说不完的你爱 2024-12-16 18:51:04

你有义务使用 xargs 来编译这些吗?

为什么不看看 java Makefile
它们将使您在构建项目时变得更轻松。

此外,还有一个建议,我建议您查看 Apache Maven。易于使用,并且当您的 java 项目逐渐变大时,它会非常有用。
这是 Maven 的快速指南

基本 Makefile:

JC=javac
JR=java

build: ref.java
        $(JC) ref.java

run: ref.class
        $(JR) ref

clean:
        rm -f *.class

另一个例子:(取自上面的指南)

JFLAGS = -g
JC = javac
.SUFFIXES: .java .class
.java.class:
        $(JC) $(JFLAGS) $*.java

CLASSES = \
        Foo.java \
        Blah.java \
        Library.java \
        Main.java 

default: classes

classes: $(CLASSES:.java=.class)

clean:
        $(RM) *.class 

Are you obliged to use xargs to compile these?

Why not take a look at java Makefiles?
They will make your life easier when building a project.

Also, one more advice, i recommend that you take look into Apache Maven. Easy to use, and very handful when your java project get bigger in time.
Here is a quick guide to Maven.

Basic Makefile:

JC=javac
JR=java

build: ref.java
        $(JC) ref.java

run: ref.class
        $(JR) ref

clean:
        rm -f *.class

Another example: (taken from the guide above)

JFLAGS = -g
JC = javac
.SUFFIXES: .java .class
.java.class:
        $(JC) $(JFLAGS) $*.java

CLASSES = \
        Foo.java \
        Blah.java \
        Library.java \
        Main.java 

default: classes

classes: $(CLASSES:.java=.class)

clean:
        $(RM) *.class 
半枫 2024-12-16 18:51:04

如果您想坚持使用 bash + javac,另一个选择是使用 find 来识别 .java 文件,将结果存储在变量中,然后检查变量是否不为空。

SRC=`find src -name "*.java"`
if [ ! -z $SRC ]; then
    javac -classpath $CLASSPATH -d obj $SRC
    # stop if compilation fails
    if [ $? != 0 ]; then exit; fi
fi

Another option if you want to stick with bash + javac is to use find to identify the .java files, store the results in a variable, and then check if the variable was not empty.

SRC=`find src -name "*.java"`
if [ ! -z $SRC ]; then
    javac -classpath $CLASSPATH -d obj $SRC
    # stop if compilation fails
    if [ $? != 0 ]; then exit; fi
fi
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文