2012-02-16 14 views
5

W kilku projektach mam pewne zasoby (w szczególności skrypty migracji bazy danych Flyway), które chcę udostępnić.Czy Maven "importuje" zależności zasobów?

Czy te wspólne zasoby istnieją jako artefakt Mavena, a przed budową Maven rozwiązuje tę zależność i rozpakowuje zawartość artefaktu na /src/main/resources/? Jeśli tak, to w jaki sposób?

Odpowiedz

7

Po umieszczeniu niektórych plików w /src/main/resources zostaną one umieszczone na ścieżce CLASSPATH w docelowym artefakcie JAR. Oznacza to, że jeśli będziesz polegać na takim artefakcie, będziesz miał dostęp do wszystkich zasobów, tak jak masz dostęp do zajęć w nim.

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

Jeśli my-resources artefakt zawiera pewne zasoby /src/main/resources, można uzyskać do nich dostęp przy starcie jak można (lub jakakolwiek inna biblioteka) dostęp /src/main/resources zawartość z tego samego artefaktu.

Należy zauważyć, że nie zadziała to w przypadku /src/test/resources, ponieważ zasoby testowe są umieszczane tylko w trybie CLASSPATH podczas wykonywania bieżącego artefaktu w trybie surefire.

+0

Dzięki! Czy taka sama praca dla '/ src/test/resources', gdyby zakres zależności był' testowy'? –

+0

@Deejay: nie. Nie można również importować klas z '/ src/test/java', nawet jeśli są importowane za pomocą zakresu' test'. –

+0

Możesz po prostu umieścić zasoby w 'testowym' artitact 'src/main/resources'. – carlspring

Powiązane problemy