2012-02-16 1 views
5

В нескольких проектах у меня есть некоторые ресурсы (в частности, сценарии миграции базы данных Flyway), которыми я хотел бы поделиться.Могут ли ресурсы Maven импортировать ресурсы?

Возможно ли, чтобы эти общие ресурсы существовали как артефакт Maven, а до сборки Maven разрешает эту зависимость и распаковывает содержимое артефакта до /src/main/resources/? Если да, то как бы это сделать?

ответ

7

Если вы поместите некоторые файлы в /src/main/resources, они будут размещены на CLASSPATH в целевом артефакте JAR. Это означает, что если вы зависите от такого артефакта, у вас будет доступ ко всем ресурсам, так же как вы имеете доступ к ним.

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

Если my-resources артефакта содержит некоторые ресурсы в /src/main/resources, вы можете получить доступ к ним во время выполнения так же, как вы (или любая другая библиотека) можете получить доступ /src/main/resources содержимого из того же артефакта.

Обратите внимание, что это не будет работать с /src/test/resources, потому что тестовые ресурсы размещаются только на CLASSPATH во время surefire выполнения текущего артефакта.

+0

Спасибо! Будет ли такая же работа для '/ src/test/resources', если область зависимости была' test'? –

+0

@Deejay: no. Также вы не можете импортировать классы из '/ src/test/java', даже если они импортированы с использованием области' test'. –

+0

Вы можете просто поместить ресурсы в 'src/main/resources' вашего' test' artitact'. – carlspring