Saltar al contenido

Opción javac para compilar todos los archivos java en un directorio determinado de forma recursiva

Solución:

También sugeriría usar algún tipo de herramienta de compilación (Ant o Maven, Ant ya está sugerido y es más fácil comenzar con) o un IDE que maneje la compilación (Eclipse usa compilación incremental con estrategia de reconciliación, y usted ni siquiera tiene que hacerlo). cuidado de presionar cualquier “Compilar” botones).

Usando Javac

Si necesita probar algo para un proyecto más grande y no tiene ninguna herramienta de construcción adecuada cerca, siempre puede usar un pequeño truco que javac ofertas: los nombres de clase a compilar se pueden especificar en un archivo. Simplemente tienes que pasar el nombre del archivo a javac con el @ prefijo.

Si puede crear una lista de todos los *.java archivos en su proyecto, es fácil:

# Linux / MacOS
$ find -name "*.java" > sources.txt
$ javac @sources.txt

:: Windows
> dir /s /B *.java > sources.txt
> javac @sources.txt
  • La ventaja es que es una solución rápida y sencilla.
  • El inconveniente es que hay que regenerar el sources.txt file cada vez que crea una nueva fuente o cambia el nombre de un archivo existente, lo cual es una tarea fácil de olvidar (por lo tanto, propensa a errores) y tediosa.

Usando una herramienta de construcción

A largo plazo, es mejor utilizar una herramienta diseñada para crear software.

Usando Ant

Si crea un simple build.xml archivo que describe cómo construir el software:

<project default="compile">
    <target name="compile">
        <mkdir dir="bin"/>
        <javac srcdir="src" destdir="bin"/>
    </target>
</project>

puede compilar todo el software ejecutando el siguiente comando:

$ ant
  • La ventaja es que está utilizando una herramienta de construcción estándar que es fácil de ampliar.
  • El inconveniente es que tienes que descargar, configurar y aprender una herramienta adicional. Tenga en cuenta que la mayoría de los IDE (como NetBeans y Eclipse) ofrecen un gran soporte para escribir archivos de compilación para que no tenga que descargar nada en este caso.

Usando Maven

Maven no es tan fácil de configurar y trabajar con él, pero aprenderlo vale la pena. Aquí hay un gran tutorial para comenzar un proyecto en 5 minutos.

  • Es la principal ventaja (para mí) es que también maneja dependencias, por lo que no necesitará descargar más archivos Jar y administrarlos a mano y lo encontré más útil para construir, empaquetar y probar proyectos más grandes.
  • El inconveniente es que tiene una curva de aprendizaje pronunciada, y si a los complementos de Maven les gusta suprimir errores 🙂 Otra cosa es que muchas herramientas también operan con repositorios de Maven (como Sbt para Scala, Ivy para Ant, Graddle para Groovy).

Usando un IDE

Ahora que lo que podría impulsar la productividad de su desarrollo. Hay algunas alternativas de código abierto (como Eclipse y NetBeans, prefiero la primera) e incluso comerciales (como IntelliJ) que son bastante populares y poderosas.

Pueden administrar la construcción del proyecto en segundo plano para que no tenga que lidiar con todas las cosas de la línea de comandos. Sin embargo, siempre es útil si sabes lo que realmente sucede en segundo plano para que pueda buscar errores ocasionales como un ClassNotFoundException.

Una nota adicional

Para proyectos más grandes, siempre se recomienda utilizar un IDE y una herramienta de construcción. El primero aumenta su productividad, mientras que el segundo permite utilizar diferentes IDE con el proyecto (por ejemplo, Maven puede generar descriptores de proyecto Eclipse con un simple mvn eclipse:eclipse mando). Además, tener un proyecto que se puede probar / construir con un comando de una sola línea es fácil de presentar a nuevos colegas y en un servidor de integración continua, por ejemplo. Pedazo de pastel 🙂

find . -name "*.java" -print | xargs javac 

Un poco brutal, pero funciona como el infierno. (Úselo solo en programas pequeños, no es absolutamente eficiente)

Si su shell lo admite, ¿funcionaría algo como esto?

javac com/**/*.java 

Si su caparazón no es compatible **, entonces tal vez

javac com/*/*/*.java

funciona (para todos los paquetes con 3 componentes – adaptarse para más o menos).

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *