java - segun - origen del idioma ingles
DiseƱo de directorio de origen de lenguaje mixto (2)
Creo que lo mejor sería asegurarse de que sus diversos módulos no dependan de estar en el mismo directorio (es decir, separado por componente). Mucha gente parece temer a muerte esta idea, pero un buen conjunto de scripts de compilación debería ser capaz de automatizar cualquier dolor.
El objetivo final sería facilitar la instalación de la infraestructura y, a continuación, facilitar el trabajo en un solo componente una vez que se haya configurado el entorno.
(Es importante tener en cuenta que procedo de los mundos Perl y CL, donde instalamos "módulos" en una ubicación global, como ~ / perl o ~ / .sbcl, en lugar de incluir cada módulo con cada proyecto, como hacen los usuarios de Java. Uno pensaría que esto sería un problema de mantenimiento, pero termina siendo uno. Con un script que actualiza cada módulo desde su repositorio de git (o CPAN) de forma regular, es realmente la mejor manera.
Editar: una cosa más:
Los proyectos siempre tienen dependencias externas. Mis proyectos necesitan Postgres y una instalación de Linux que funcione. Sería una locura combinar esto con el código de la aplicación en el control de la versión, pero un script para configurar todo en una nueva estación de trabajo es muy útil.
Creo que lo que estoy tratando de decir, de una manera indirecta tal vez, es que no creo que deba tratar sus módulos internos de forma diferente a los módulos externos.
Estamos ejecutando un gran proyecto con varios idiomas diferentes: Java, Python, PHP, SQL y Perl.
Hasta ahora las personas han estado trabajando en sus repositorios privados, pero ahora queremos fusionar todo el proyecto en un único repositorio. La pregunta ahora es: ¿cómo debe verse la estructura del directorio? ¿Deberíamos tener directorios separados para cada idioma, o deberíamos separarlo por componente / proyecto? ¿Qué tan bien lidia python / perl / java con un diseño de directorio común?
Mi experiencia indica que este tipo de diseño es el mejor:
mylib/
src/
java/
python/
perl/
.../
bin/
java/
python/
perl/
stage/
dist/
src
es su fuente, y es lo único que se registra.
bin
es donde se produce la "compilación" durante la compilación, y no se registra.
stage
es donde copias cosas durante la construcción para prepararlos para el embalaje
dist
es donde pones los artefactos de construcción
Puse el módulo / componente / biblioteca en la parte superior de la jerarquía, porque construyo cada módulo por separado y uso un administrador de dependencias para combinarlos según sea necesario.
Por supuesto, las convenciones de nombres varían. Pero he encontrado que esto funciona bastante satisfactoriamente.