2012-02-16 15 views
5

En varios proyectos tengo algunos recursos (específicamente guiones de migración de base de datos de Flyway) que me gustaría compartir.¿Puede Maven 'importar' dependencias de recursos?

¿Es posible que estos recursos compartidos existan como un artefacto Maven, y antes de una compilación, Maven debería resolver esa dependencia y descomprimir el contenido del artefacto en /src/main/resources/? Si es así, ¿cómo podría uno hacer esto?

Respuesta

7

Si coloca algunos archivos en /src/main/resources, se colocarán en CLASSPATH en el artefacto JAR de destino. Esto significa que si dependes de tal artefacto, tendrás acceso a todos los recursos, del mismo modo que tienes acceso a clases en él.

<dependency> 
    <groupId>com.example.foo</groupId> 
    <artifactId>my-resources</artifactId> 
    <version>0.1</version> 
</dependency> 

Si my-resources artefacto contiene algunos recursos en /src/main/resources, se puede acceder a ellos en tiempo de ejecución al igual que usted (o cualquier otra biblioteca) puede acceder a /src/main/resources contenidos del mismo artefacto.

Tenga en cuenta que esto no funcionará con /src/test/resources porque los recursos de prueba solo se colocan en CLASSPATH durante la ejecución surefire del artefacto actual.

+0

Gracias! ¿Funcionaría lo mismo para '/ src/test/resources' si el alcance de la dependencia fuera' test'? –

+0

@Deejay: no. Además, no puede importar clases de '/ src/test/java', incluso cuando se importa utilizando el alcance' test'. –

+0

Simplemente puede poner los recursos en 'test' artitact' src/main/resources'. – carlspring

Cuestiones relacionadas