2015-02-13 21 views
33

Zaczynając od jakiegoś Wersja wtyczki montaż Maven buduje wydać następujące ostrzeżenie:Maven montaż ostrzeżenie wtyczki „deskryptor montaż zawiera system plików root odwołanie względne”

[OSTRZEŻENIE] Deskryptor montaż zawiera system plików root względem odniesienie, które nie jest kompatybilne z wieloma platformami/

Czy jest do tego jakieś zalecane rozwiązanie gotowe do użycia? Bezpośrednie googlowanie dostarczyło mi dużo śmieci i żadnej prawdziwej pomocy. Ponowne sprawdzenie dodatku do wtyczki zespołu Maven nie dostarczyło mi odpowiedzi, może ktoś inny ma lepsze umiejętności wyszukiwania i może pomóc.

UPDATE

Tak, to prawdopodobnie dlatego, że Linux-jak outputDirectory ale jak mam przerobić to być przenośny? Sprawdzono dokumentację wtyczki zespołu i nie znaleziono podręcznika przenośności.

rozwiązanie
<fileSets> 
    <fileSet> 
     <directory>${basedir}/src/main/resources</directory> 
     <outputDirectory>/</outputDirectory> 
    </fileSet> 
</fileSets> 
+0

można pokazać deskryptor zestawu? Prawdopodobnie pokaże, że w jakiś sposób odwołujesz się do bezwzględnej ścieżki (_/a/b/c_), której należy unikać w celu zapewnienia możliwości przenoszenia w różnych środowiskach. – Tome

+0

Tak, to jest w przypadku tworzenia pliku tar, który nie może zawierać wpis root-a systemu plików ... który btw. tak naprawdę nie ma sensu. – khmarbaise

+1

Jak widać outputDirectory definiuje '/', co w konsekwencji oznaczałoby wyodrębnić wszystkie contens do zawsze tej samej lokalizacji. Poza tym ta lokalizacja jest ograniczona do konta root. Ponadto pytanie brzmi: dlaczego używasz 'fileSets', aby uzyskać folder' src/main/resources'? Specjalny powód? – khmarbaise

Odpowiedz

46

Działanie jest określenie pusty outputDirectory:

<fileSets> 
    <fileSet> 
     <directory>${basedir}/src/main/resources</directory> 
     <outputDirectory></outputDirectory> 
    </fileSet> 
</fileSets> 
+2

Nie zawsze jest pożądane pozostawienie go pustego, co należy zrobić, jeśli trzeba go ustawić? – scrapcodes

+3

Jeśli chcesz określić tutaj katalog, zrób to - dlatego ten parametr jest tutaj i tak. Po prostu unikaj absolutnych ścieżek zaczynających się od "/". – Torsten

+2

Lub samozamykający się '' – naXa

21

Korzystanie z pustym outputDirectory robót elementów, ale nie zdziwiłbym się, gdyby ktoś zakłada, że ​​może być bezpiecznie usunięte.

Tak więc, aby być bardziej wyraźne, można również uniknąć ostrzeżenie pisząc:

<outputDirectory>${file.separator}</outputDirectory> 
+0

IMO to najlepsze podejście, ponieważ działa na dowolnej ścieżce nie tylko/ale także/foo/bar –

+0

Czy mógłbyś wyjaśnić, jak określić właściwość file.separator do pracy dla zarówno platformy * nix, jak i platformy Windows? – vivekmore

3

Zauważ, że to może się zdarzyć w innych miejscach poza tylko /. Powyższe odpowiedzi są poprawne, ale nie obejmują tej sprawy.

szukać czegoś takiego w swoim assembly.xml:

<fileSets> 
    <fileSet> 
     <directory>${basedir}/src/main/resources</directory> 
     <outputDirectory>/lib</outputDirectory>   <!-- <<< look for this --> 
    </fileSet> 
</fileSets> 

i przesiąść się w ten sposób:

<fileSets> 
    <fileSet> 
     <directory>${basedir}/src/main/resources</directory> 
     <outputDirectory>lib</outputDirectory> 
    </fileSet> 
</fileSets>