Mi problema resultó ser algo más que simplemente expandir el archivo .ear recursivamente (escribí una clase de Java para hacer eso - la recursividad lo hizo simple.) Una vez que los archivos .ear se expanden tengo que modificar los directorios para verificar para cualquier cambio Si cambia algo más que marcas de tiempo, entonces sé que la compilación está produciendo un binario diferente.
El segundo problema es que nuestro proceso de compilación genera cientos de archivos .xml y las compilaciones posteriores vuelven a generar esos archivos .xml con los elementos en orden diferente. No estoy seguro por qué. Cuando amplío dos archivos .ear realizados por compilaciones consecutivas sin cambios en nada, la diferencia de los directorios resultantes muestra cientos de archivos .xml con diffs, aunque sean funcionalmente equivalentes.
Además de expandir los archivos .ear de forma recursiva, necesito hacer un diff y excluir los archivos .xml en ciertos directorios. Pensé que diff Cygwin harían esto, pero el interruptor --exclude no reconoce ninguna información de ruta:
Cygwin diff won't exclude files if a directory is included in the pattern
Si no encuentro una solución a este Voy a escribir otra clase Java para recorrer toda la estructura del directorio haciendo un diff de un solo nivel en cada directorio y excluyendo los archivos .xml en los directorios apropiados.
Tengo la sensación de que estoy reinventando la rueda, pero no puedo encontrar una rueda en este momento.
Sugiero contactar con el soporte de Beyond Compare. Son muy receptivos en mi experiencia, y pueden ser capaces de ayudar. – TrueWill