Makefile para Java
![]() | ¿Cuántos de ustedes los programadores de Java han tenido problemas para compilar programas? bibliotecas fuera de $ CLASSPATH, los parámetros para pasar a la altura del kilómetro compilador de Java. Incluso la utilización de entornos de desarrollo para Java, la situación no mejora mucho. Pasamos mucho tiempo para establecer paramteri y cada vez que se ejecute la compilación siempre falta algo! |
Usted puede evitar todos estos problemas simplemente mediante la organización de la fuente de Java y el uso de un Makefile por escrito para tal fin.
¿Qué es un Makefile
Un Makefile es un archivo que describe los pasos a efftuare para llegar a los archivos que tenemos el árbol y todas sus dependencias. Es ampliamente utilizado en Unix plataformas basadas y pueden ser utilizados para elaborar cada tipo de programa. La utilidad make interpreta el Makefile y compilar el código fuente de programas ejecutables y bibliotecas.
Ventajas de usar que
Muchos de ustedes son escépticos respecto de la utilización de un makefile para cada proyecto Java por la sencilla razón de que el makefile tiene que especificar todas las dependencias entre archivos, lo que ciertamente varía de proyecto a proyecto. Así que debemos escribir un makefile diferentes para cada uno de nuestro proyecto. Este límite puede ser superado por escrito un makefile genéricos que se pueden calcular todas las dependencias para que el proyecto se complete a fin de utilizar el mismo guión para todos los proyectos sin que nada moficare en el Makefile.
Ciertamente, no es despreciable ventaja es la capacidad de hacer sólo lo que necesita llenar. Por favor, evite hacer lo que ya está terminado y no ha sido modificado con un ahorro sustancial de tiempo.
Con un makefile que usted puede construir todas las fuentes del proyecto.
Cómo usar
El makefile que escribí para construir proyectos de Java puede ser utilizado sin modificaciones para los proyectos que tienen una estructura de directorio determinado. El código fuente Java debería tener un directorio para i. Java, una para los archivos. Clase, y una vasija para las bibliotecas.
Ejemplo:
| - Src | `- Principal | | - Java | | `- Com | | `- Ejemplo | | | - ExampleA.java | | | - ExampleB.java | | `- ExampleC.java | `- Recursos | `- Res.java | - Clases | - Libs | | - General | | | - Base de datos | | | | - DB1.jar | | | `- DB2.jar | `- Registro | `- Log.jar | - Jars
Para utilizar ella, tan sólo escribe el código de abajo en el Makefile en el directorio raíz del proyecto, compruebe que el nombre del directorio es el especificado en el archivo (para las clases. Clase, por src. Librerías para java y jar) y el lanzamiento del mando make
Eso es todo. Si también queremos un frasco que contiene el proyecto en su conjunto sólo ejecute make && make jar
Makefile
# # Makefile # Autor: Danilo Abbasciano # # Establezca aquí los directorios de las clases y las fuentes de CLASS_DIR = clases SOURCE_DIR src = Frascos JARS_DIR = find $ ( SOURCE_DIR ) - name "*.java" - printf % h\\n | sort | uniq | sed 's/$(SOURCE_DIR) \/ \? //' ) SUBDIRS: = $ (shell encontrar $ (SOURCE_DIR) - name "*. java" -% h printf \ n | sort | uniq | sed 's / $ (SOURCE_DIR) \ / \? / /') local / java / bin JAVA_HOME = / usr / local / java / bin Campo # compilador # JDEBUGFLAGS =- g-desaprobación # JDEBUGFLAGS =- O-dependen-nowarn ) / javac CCM = $ (JAVA_HOME) / javac clean classes compile jar . PHONY: Limpieza compilar las clases jar todos: SUBDIRS ) ; do \ @ @ Para p en $ (SUBDIRS); hacer \ p ; \ echo 'compilar' $ $ p; \ $$ p ; \ Exportación SubD = $ $ p; \ print - directory compile ; \ que - no - de impresión - directorio de compilación, \ hecho Limpieza: f * ~ *. class *. bak $ ( foreach dir ,$ ( SUBDIRS ) ,$ ( CLASS_DIR ) /$ ( dir ) /*. class ) - Rm - f * ~ *. bak *. class $ (foreach dir, $ (SUBDIRS), $ (CLASS_DIR) / $ (dir) / *. class) ) /$ ( SUBDIR ) LOCAL_CLASS_DIR = $ (CLASS_DIR) / $ (SubD) ) /$ ( SUBDIR ) LOCAL_SOURCE_DIR = $ (SOURCE_DIR) / $ (SubD) JAR: ) ; jar - cf ../$ ( JARS_DIR ) / project . jar * cd $ (CLASS_DIR); JAR - cf .. / $ (JARS_DIR) / proyecto. jar * compilar: clases # Crear la clase de destino dir si no está presente. ) : $ (LOCAL_CLASS_DIR): LOCAL_CLASS_DIR ) mkdir - p $ (LOCAL_CLASS_DIR) Nueva Regla # para Java . SUFIJOS: java . class . SUFIJOS:. Java. Clase # Comando mágico que le dice a make para encontrar archivos de clase en otro dir class $ ( LOCAL_CLASS_DIR ) vpath%. $ class (LOCAL_CLASS_DIR) java $ ( LOCAL_SOURCE_DIR ) vpath%. java $ (LOCAL_SOURCE_DIR) # Rutas de clases, todos los in / Jars y. / Libs ) :$ ( SOURCE_DIR ) :$ ( subst . jar ,. jar :,$ ( wildcard libs /*. jar libs /*/*. jar libs /*/*/*. jar jars /*. jar ) ) LIBCLASSPATH: = $ (CLASS_DIR): $ (SOURCE_DIR): $ (subst. JAR,. Jar:, $ (wildcard libs / *. jar libs /*/*. libs jar /*/*/*. frascos jar / * . jar)) # Comando Compil class : . Java. Clase: ) $ ( JCC ) - nowarn - d $ ( CLASS_DIR ) $ ( JDEBUGFLAGS ) $< CLASSPATH = $ (LIBCLASSPATH) $ (CCM) - nowarn - d $ (CLASS_DIR) $ (JDEBUGFLAGS) $ < # Descubra los archivos de destino $ ( LOCAL_SOURCE_DIR ) /*. java ) PATHFILES = $ (wildcard $ (LOCAL_SOURCE_DIR) / *. java) $ ( LOCAL_SOURCE_DIR ) /,,$ ( PATHFILES ) ) FILES = $ ($ subst (LOCAL_SOURCE_DIR) /,, $ (PATHFILES)) java =. class ) clases: $ (FILES:. =. clase java)
Buena compilación.















Una respuesta a "Makefile para Java"
thegamer - 28 de agosto 2009
Me gusta mucho más hormiga!
Usted debe probarlo ...
Deje una contestación