Tengo un proyecto simple de Java Maven. Una de mis clases al ejecutar necesita cargar un archivo de configuración xml desde classpath. No quiero empaquetar dicho archivo xml al producir el jar, pero quiero incluir un archivo xml predeterminado en un ensamblado zip bajo una subcarpeta conf y también quiero que este xml predeterminado esté disponible en las pruebas unitarias para probarlo.Donde en la ruta del proyecto maven debería poner archivos de configuración que no se consideran recursos
mi punto de vista hay 2 lugares posibles de este default xml:
src/main/resources/conf/default.xml
src/main/conf/default.xml
Ambas soluciones exigen acciones pom especiales:
En solución 1, obtengo la copia automática en la carpeta de destino durante b Uild, lo que significa que está disponible en las pruebas, pero también lo obtengo en el envase producido que no quiero.
En la solución 2, obtengo el jar como lo quiero (sin el xml) pero manualmente tengo que copiar el xml a la carpeta de destino para estar disponible para la prueba. (No quiero agregar las subcarpetas de src en el classpath de prueba. Creo que es una mala práctica).
Pregunta: ¿cuál es la mejor solución de las dos?
- Si el correcto es 2, ¿cuál es la mejor manera de copiarlo en la carpeta de destino?
- ¿Hay alguna otra solución mejor y más común que esas dos?
(También leo Where should I put application configuration files for a Maven project? pero me gustaría saber cuál es la "solución correcta" desde el punto de vista de "convención sobre configuración" y este enlace proporciona algunas soluciones de tipo de configuración pero no orientadas a convenciones. Tal vez no exista uno pero pregunto de todos modos. También las soluciones proporcionadas incluyen el plugin AntRun y el plugin appAssembler y me pregunto si podría hacerlo sin ellos.)
Hay Problemas con ambas soluciones: 1./declarar 'conf' como un recurso todavía lo incluye en el contenedor, y no nos deja una manera fácil de excluir; 2./crear 'conf' dentro de los recursos, y excluirlo en el complemento hace que no esté en la raíz de la ruta de clase. – YoYo
por alguna razón esta es una de las pocas respuestas útiles en general para "cómo excluir algo de Maven Jar" cuando se busca en Google ... incluso si no responde OP exactamente, sigue siendo un gran ejemplo de usar 'maven-jar -plugin' – mmcrae