Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Compiling java files in all subfolders? [duplicate]

Tags:

How to compile all java files in all subfolders on Unix, using javac?

like image 360
aneuryzm Avatar asked Mar 04 '11 14:03

aneuryzm


People also ask

How do I compile all Java files in a package?

Open a command prompt and navigate to the compile-packages-in-java directory. Then type in the command to compile the Person source and hit Enter . Notice that you provided the path of the Java file. This path corresponds to the package name.


2 Answers

On Windows...

Create a batch file:

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

...then execute it in the top-level source folder.

On Linux...

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

Both answers taken from this thread...

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

But as others suggested, a build tool would probably prove helpful.

like image 109
Brandon Frohbieter Avatar answered Sep 19 '22 11:09

Brandon Frohbieter


Use a build tool such as Ant or Maven. Both lets you manage dependencies in a much better way than can be accomplished using e.g. the find UNIX tool. Both And and Maven also lets you define custom tasks to be performed in addition to compilation. Maven furthermore comes with conventions for managing external dependencies in remote repositories, as well as conventions for running unit tests and features that support continuous integration.

Even if you just need to compile your source files once in a while, you'll probably find that setting up a simple Ant build.xml file can be a big time saver in the end.

Finally, most of the popular IDE and code editor applications has some kind of integration with Ant build scripts, so you can run all the Ant tasks from within the editor. NetBeans, Eclipse, IDEA and more also has built-in support for Maven.

Read this first, if you're new to Ant. Below is the example build file from the link:

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

Once you're familiar with Ant, you'll find it easier to move to Maven.

like image 36
Kim Burgaard Avatar answered Sep 20 '22 11:09

Kim Burgaard