Estoy creando arquetipos Maven 2 para nuestro proyecto (Weld). Me gustaría poder controlar qué archivos se colocan en el proyecto generado en función del valor de una propiedad que se define durante archetype:generate
. Por ejemplo, preveo el siguiente mensaje:¿Cómo incluyo o excluyo condicionalmente un archivo de un arquetipo cuando se genera un proyecto?
Define value for groupId: : com.example
Define value for artifactId: : myproject
Define value for package: com.example: :
Define value for includeGradleSupport: : y
Con base en el valor de includeGradleSupport, quiero incluir (o no incluir) el archivo build.gradle
en el proyecto generado. Si el usuario no quiere la compatibilidad con Gradle, no quiero saturar el proyecto generado con archivos innecesarios.
Otro ejemplo es que podría necesitar proporcionar un fragmento web Jetty (para activar un oyente) si el usuario quiere soporte Jetty.
Todo se trata de la personalización del proyecto en función de lo que el desarrollador pretende utilizar. Si bien podría crear otro arquetipo completo, a veces los cambios son tan pequeños que sería más fácil incluir/excluir un archivo.
¿Hay alguna manera de controlar este comportamiento utilizando el descriptor archetype-metadata.xml
?
De acuerdo con este problema: http://jira.codehaus.org/browse/ARCHETYPE-58 esta característica está en camino. Ahora solo necesitamos ver algunos documentos (¿cuánto tiempo podría esperar?) –
Trabajé en un proyecto durante un tiempo que usó perfiles para este tipo de comportamiento y que funcionó mal y nuestras construcciones y poms fueron extremadamente complicados. Al final llegamos a la conclusión de que lo mejor que podía hacer era establecer una nueva estructura de proyecto donde nuestro código principal de la aplicación se agitara y luego las diferentes configuraciones de implementación fueran construcciones completamente diferentes que tenían una dependencia en el proyecto principal. Esto crea muchas construcciones y proyectos, pero todos son simples y fáciles de mantener y tienen un solo artefacto. –