Может ли Maven «импортировать» зависимости ресурсов?

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

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


person EngineerBetter_DJ    schedule 16.02.2012    source источник


Ответы (1)


Если вы поместите несколько файлов в /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 выполнения текущего артефакта.

person Tomasz Nurkiewicz    schedule 16.02.2012
comment
Спасибо! Будет ли то же самое для /src/test/resources, если бы область зависимости была test? - person EngineerBetter_DJ; 16.02.2012
comment
@Deejay: нет. Также вы не можете импортировать классы из /src/test/java, даже если импортированы с использованием test области видимости. - person Tomasz Nurkiewicz; 16.02.2012
comment
Вы можете просто поместить ресурсы в свой test artitactsrc/main/resources. - person carlspring; 16.02.2012
comment
@carlspring: мне было интересно, могут ли ресурсы из артефакта оказаться в /src/test/resources/, поскольку у меня есть случаи использования, когда указанные ресурсы необходимы только для настройки тестов JUnit. - person EngineerBetter_DJ; 16.02.2012
comment
@Deejay должен работать, следуя stackoverflow.com/a/12299238/1266906 в смысле путей к классам - person TheConstructor; 19.02.2014
comment
@TomaszNurkiewicz При импорте зависимости проекта B в проект A, как мы можем ПРЕКРАТИТЬ импорт всех ресурсов проекта B в A. - person user3187479; 20.06.2020