Java:如何在命令提示符下编译整个代码目录结构?

时间:2015-01-09 14:28:58

标签: java java-ee

我正在使用Eclipse&在window7平台上的Tomcat7,我也在eclipse中配置了项目。通常我们使用CMD运行单个java文件。 但我想通过命令提示符编译并运行整个java代码。 我在单个src文件夹中有很多结构,如E:\ proj \ src \ com \ mycode.Inside mycode文件夹中有7个子文件夹可用&每个子文件夹都有许多.java文件和内子文件夹。 例如: E:\凸出的\ src \ COM \ mycode的\ DTO \ mail.java,E:\凸出的\ src \ COM \ mycode的\ DTO \ sms.java E:\ PROJ \ SRC \ COM \ mycode的\ DTO \安全\ securityFile.java

以上相同的模式其他文件夹都有java文件。所以我需要编译&运行整个java文件,包括子文件夹&内部子文件夹使用COMMAND PROMPT。

提前感谢,

3 个答案:

答案 0 :(得分:1)

我会对你的代码的结构做出一些(希望是相当安全的)假设:

  • 你有一个主程序(我在下面称它为com.mycode.dto.Main),
  • 它对其他文件有编译时依赖性(你不使用反射或其他),
  • 您的源文件与包结构匹配(com.foo.Bar位于E:\proj\src\com\foo\Bar.java)。

在这种情况下,你可以这样做:

javac -d <destination> -sourcepath E:\proj\src E:\proj\src\com\mycode\dto\Main.java

然后编译器将自动遍历文件依赖项并将类文件输出到destination

答案 1 :(得分:0)

尝试使用通配符:

javac *.java

您可以根据需要使用各种参数,这些参数可以与javac一起使用:

Usage: javac <options> <source files>
where possible options include:
-g                         Generate all debugging info
-g:none                    Generate no debugging info
-g:{lines,vars,source}     Generate only some debugging info
-nowarn                    Generate no warnings
-verbose                   Output messages about what the compiler is doing
-deprecation               Output source locations where deprecated APIs are used
-classpath <path>          Specify where to find user class files and annotation processors
-cp <path>                 Specify where to find user class files and annotation processors
-sourcepath <path>         Specify where to find input source files
-bootclasspath <path>      Override location of bootstrap class files
-extdirs <dirs>            Override location of installed extensions
-endorseddirs <dirs>       Override location of endorsed standards path
-proc:{none,only}          Control whether annotation processing and/or compilation is done.
-processor <class1>[,<class2>,<class3>...]Names of the annotation processors to run; bypasses     default discovery process
-processorpath <path>      Specify where to find annotation processors
-d <directory>             Specify where to place generated class files
-s <directory>             Specify where to place generated source files
-implicit:{none,class}     Specify whether or not to generate class files for implicitly   referenced files
-encoding <encoding>       Specify character encoding used by source files
-source <release>          Provide source compatibility with specified release
-target <release>          Generate class files for specific VM version
-version                   Version information
-help                      Print a synopsis of standard options
-Akey[=value]              Options to pass to annotation processors
-X                         Print a synopsis of nonstandard options
-J<flag>                   Pass <flag> directly to the runtime system

答案 2 :(得分:0)

如果您在多个分层目录中有源,则可以使用ant。

在项目目录的根目录中创建build.xml文件。

<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>

在你的机器上安装ant,确保你的路径中有bin目录,然后就可以运行

ant -f build.xml

当然这只是一个起点(ant提供了一些有趣的选项,让您微调构建/打包的所有方面)。

示例build.xml文件取自here