编译所有子文件夹中的 java 文件?

2022-09-02 02:30:12

如何使用javac编译Unix上所有子文件夹中的所有java文件?


答案 1

在视窗上...

创建批处理文件:

for /r %%a in (.) do (javac %%a\*.java)

...然后在顶级源文件夹中执行它。

在 Linux 上...

javac $(find ./rootdir/* | grep .java)

两个答案都取自此线程...

http://forums.oracle.com/forums/thread.jspa?threadID=1518437&tstart=15

但正如其他人所建议的那样,构建工具可能会证明是有帮助的。


答案 2

使用构建工具,如 AntMaven。两者都允许您以比使用UNIX工具更好的方式管理依赖关系。And 和 Maven 还允许您定义除编译之外要执行的自定义任务。此外,Maven 还提供了用于管理远程存储库中的外部依赖项的约定,以及用于运行单元测试和支持持续集成的功能的约定。find

即使您只需要偶尔编译一次源文件,您也可能会发现设置一个简单的 Ant 文件最终可以节省大量时间。build.xml

最后,大多数流行的 IDE 和代码编辑器应用程序都与 Ant 构建脚本进行了某种集成,因此您可以从编辑器中运行所有 Ant 任务。NetBeansEclipseIDEA等也内置了对Maven的支持。

如果您不熟悉 Ant,请先阅读本文。以下是链接中的示例构建文件:

<project name="MyProject" default="dist" basedir=".">
    <description>
        simple example build file
    </description>
  <!-- set global properties for this build -->
  <property name="src" location="src"/>
  <property name="build" location="build"/>
  <property name="dist"  location="dist"/>

  <target name="init">
    <!-- Create the time stamp -->
    <tstamp/>
    <!-- Create the build directory structure used by compile -->
    <mkdir dir="${build}"/>
  </target>

  <target name="compile" depends="init"
        description="compile the source " >
    <!-- Compile the java code from ${src} into ${build} -->
    <javac srcdir="${src}" destdir="${build}"/>
  </target>

  <target name="dist" depends="compile"
        description="generate the distribution" >
    <!-- Create the distribution directory -->
    <mkdir dir="${dist}/lib"/>

    <!-- Put everything in ${build} into the MyProject-${DSTAMP}.jar file -->
    <jar jarfile="${dist}/lib/MyProject-${DSTAMP}.jar" basedir="${build}"/>
  </target>

  <target name="clean"
        description="clean up" >
    <!-- Delete the ${build} and ${dist} directory trees -->
    <delete dir="${build}"/>
    <delete dir="${dist}"/>
  </target>
</project>

一旦你熟悉了蚂蚁,你就会发现迁移到Maven会更容易。


推荐