Diseño > Organización de Código Fuente y Sistemas de Compilación

Información de la versión

Proyecto: NOMBREDELPROYECTO
Número Interno de Versión: X.Y.Z
Documentos Relacionados:
LIGAS A ESTÁNDARES RELEVANTES
LIGAS A OTROS DOCUMENTOS

Resumen

TAREAS: Conteste las preguntas que se encuentran abajo para ayudar a definir la organización de su código fuente y procesos de compilación. Se ha incluido texto de ejemplo. Añada o elimine texto según sea necesario. Por ejemplo, no todos los proyectos desean ser independientes de la plataforma.
¿Cuáles son los hechos más importantes que un desarrollador debería saber acerca de esta organización de código fuente y el sistema de compilación?
Esta organización sigue de forma muy libre el estándar propuesto en la documentación de Tomcat y es muy similar a la organización usada en muchos proyectos open-source en la Apache Software Foundation.
¿Cuáles son los objetivos categorizados de esta organización de código fuente y el sistema de compilación?
  1. Separación de archivos por tipo
  2. La separación de los archivos controlados por versión de los archivs generados en el proceso de compilación
  3. Compatibilidad con procesos de compilación estándar
  4. Independencia de Plataforma

Directorios y archivos clave en copias de trabajo para desarrollo

TAREAS: Describa el propósito de cada directorio que aparece en una copia de trabajo de desarrollo, incluya también cualquier archivos que son importantes para la estructura general o el proceso de compilación.
PathVCDescripción
build.xml Archivo compilado
build.properties Archivo de propiedades de compilación
src/ Código fuente
src/java/ Código fuente Java
src/java/[paquetes anidados]/ Código fuente Java de clases en cada paquete
src/java/[paquetes anidados]/test/ Código fuente de Java para pruebas unitarias de las clases en cada paquete
web/ Archivos HTML y JSP
web/css/ Archivos CSS, si existen
web/images/ Archivos de imágenes, si existen
web/WEB-INF/web.xml Archivo de configuración de la aplicación web en Java
conf/ Archivos de configuración, si existen
data/ Datos iniciales a cargar en la base de datos y/o el sistema de archivos, si existen
lib/ Librerías reusadas por este proyecto, si existen
scripts/ Utilerías de línea de comando usadas en este proyecto, si existen
www/ Documentos del proyecto (por ejemplo, resumenes, plan, requerimientos y diseño)
build/ No Salida al proceso de compilación
build/WEB-INF/classes/ No Salida al código compilado por el proceso de compilación
dist/docs/api/ No Documentación de la API producida por el proceso de compilación
dist/NOMBREDELPROYECTO-VERSION.war No Archivo web de clases distribuible y archivos de configuración generados por el proceso de compilación

Compilaciones de trabajo

TAREAS: Describa las compilaciones de trabajo que los desarrolladores utilizarán diariamente en su trabajo. Los ejemplos abajo deberán servir para la mayoría de los proyectos.
DestinoDescripción
compile = default Compila el código fuente en Java y crea archivos .class en el directorio "build".
dist Empaca el sistema para distribución/entrega a servidores o a usuarios finales. Específicamente, crea archivos. war de clases compiladas y archivos de configuración.
install Coloca el código ejecutable en un lugar donde puede ser ejecutado. Especificamente, copia los archivos .war en el directorio webapps de Tomcat para utilizarlo. Deberá reiniciar Tomcat para usarlo o usar la liga de "refrescar" en el Administrador de Tomcat.
javadoc Genera documentación API de Java en "build/docs/api/".
clean Borra los archivos generados por comandos previos de compilación. Los archivos bajo control de versión no son tocados.

Opciones de Configuración para Compilación

PropiedadDescripción
app.nombre El nombre de esta aplicación. Se recomienda usar una palabra corta, usada en el nombre los archivos de los paquetes a generar. Específicamente el archivo .war, y será usado para accesar la aplicación en http://localhost:8080/APP.NOMBRE/
app.version Número de versión de esta entrega. Usada en el nombre de los archivos de paquetes generados, específicamente el archivo .war.
webapps.path Path a los directorios "webapps" de Tomcat. Por defecto apunta a C:\Program Files\Apache Group\Tomcat 4.1\webapps\

Estas propiedades del sistema de compilación pueden ser modificadas editando el archivo build.properies.

Lista de Pendientes de la Organización de Código Fuente y Sistemas de Compilación

Separación de archivos por tipo: ¿Los archivos están separados por tipo?
Sí. Excepto los archivos de aplicación JSP y HTML que están en el mismo directorio, lo cual es conveniente porque algunas veces cambiamos un archivo HTML en uno JSP.
Separación de archivos controlados por versión y los que no llevan control: ¿A qué punto se ha realizado esto?
Ha sido terminada. Todo está bajo control de versión excepto el directorio "build". Ningún paso en el proceso de compilación debería crear o modificar ningún archivo en cualquier otro directorio.
Compatibilidad con procesos de compilación estándar: ¿Hasta qué punto se ha realizado esto?
Bien hasta el momento. Podemos usar los archivos build.xml que son muy cercanos a los ejemplos que vienen con Ant. Una diferencia es que mantenemos nuestra documentación técnica bajo "www" en lugar de usar "docs". También hemos evitado el uso de tareas personalizadas en Ant.
Independencia de Plataforma: ¿Hasta qué punto se ha realizado esto?
Estamos usanddo Ant, el cual es en si mismo independiente de la plataforma. Los nombres de los archivos y directorios deberían servir en cualquier plataforma debido a que no se utiliza diferenciación de mayúsculas. Asumimos que la utilidad de los scripts en el directorio "scripts" soportan todas las plataformas necesarias y no hemos creado directorios para versiones diferentes de estos archivos para plataformas específicas.
TAREAS: Revisar las notas de sabiduría y discutir formas de mejorar esta plantilla.
Compañía Propietaria
Copyright © 2003 Jason Robbins. Todos los derechos reservados. Términos de la Licencia. Mantenga esta leyenda derechos donde utilice este archivo como plantilla - Traducción al español por Interplanet, México, D.F.