2012-06-22 7 views
5

Mam bardzo specyficzne wymaganie naszej infrastruktury kompilacji, aby skopiować pewną zawartość innej zależności JAR do określonego podfolderu mojej aplikacji internetowej. Używamy pluginu maven-assembly, a naturalnym sposobem na to jest użycie <dependencySet> wraz z <unpackOptions>.Zespół Maven - skopiuj tylko plik z podfolderu podczas wyodrębniania z archiwum

Próbka kodu (w deskryptorze montażowej) Mam wygląda następująco:

<dependencySet> 
     <unpack>true</unpack> 
     <scope>runtime</scope> 
     <useProjectArtifact>false</useProjectArtifact> 
     <includes> 
      <include>my.group:artifact:jar</include> 
     </includes> 
     <unpackOptions> 
      <includes> 
       <include>subfolder/config.xml</include> 
      </includes> 
     </unpackOptions> 
     <outputDirectory>WEB-INF/otherfolder</outputDirectory> 
    </dependencySet> 

Problemem jest to, że nie mogę dowiedzieć się, jak określić, że chcę tylko, aby skopiować tylko jeden plik do artifact.jar/subfolder/config.xml cel WEB-INF/otherfolder. Rzeczywisty wynik to WEB-INF/otherfolder/subfolder/config.xml. Jak widać, /subfolder zostaje dołączony do ostatniej ścieżki. Czy istnieje sposób zmiany wyrażenia <include>, aby /subfolder nie została dołączona?

Z góry dziękuję!

+0

Czy próbowałeś usunąć inny folder z katalogu outputDirectory? – khmarbaise

+0

@khmarbaise W takim przypadku otrzymam WEB-INF/podfolder/config.xml. Ale spodziewanym rezultatem jest WEB-INF/otherfolder/config.xml –

+0

try **/config.xml i zobacz co się stanie .. – om39a

Odpowiedz

2

Przeglądanie źródła ujawnia, że ​​nie jest to możliwe poprzez wtyczkę do montażu maven-assembly. Zawiera wszystkie elementy, które są określone w deskryptorze zespołu, a następnie przekazuje tę informację do archiwizatora Plexus, który jest używany w wielu etapach. Wzorce dołączania są również przekazywane do archiwizatora Plexus, a następnie oczywiście wykonuje "rozpakowywanie" zachowującej struktury katalogów.

+0

Dzięki za opinie. – Puce

1

Czy kiedykolwiek myślałeś o maven-dependency-plugin, który ma dobrą obsługę rozpakowywania archiwów.

+0

Myślałem, i będę przemyślał ponownie, bo wyczyszczę skrypty budujące. Ale szczerze mówiąc, nie jest to odpowiedź na pytanie. –

0

Jak @khmarbaise wskazuje, rozwiązanie polega na połączeniu zależnościach wtyczki z montażem-plugin:

  • Na początku fazy pakiet przez rozpakowanie zależności trzeba jakiegoś katalogu docelowego
  • Na opakowaniu (w dalszej części pom) użyj zespołu, aby wyodrębnić określone pliki z tego katalogu do twojego artefaktu
Powiązane problemy