2014-12-03 9 views
6

muszę zdać katalog w formacie Windows jako argument dla funkcji exec na Maven, oto fragment pom.xml

<plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>exec-maven-plugin</artifactId> 
     <version>1.2.1</version> 
     <executions> 
      <execution> 
      <id>export</id> 
      <phase>deploy</phase> 
      <goals> 
       <goal>exec</goal> 
      </goals> 
      <configuration> 
      <escape>true</escape>  
       <executable>${cmdl.exec}</executable> 

       <workingDirectory>${cmdl.location}</workingDirectory> 
       <arguments> 
       <argument>${project.basedir}\\target\\classes\\publishRoute</argument> 
       </arguments> 

      </configuration> 
      </execution> 
     </executions> 
    </plugin> 

problem, że zetknąłem się, że $ {project.basedir} rozwiązać na pojedynczy ukośnik:

cmd /c script_cmdline.bat C:\Talend_CI\talend\release\Routes\SimpleRoute\\target\\classes\\publishRoute 

i muszę przenieść go z podwójnym ukośnikiem odwrotnym. Jak mogę to osiągnąć za pomocą $ {project.basedir}?

+0

Pojedyncze ukośniki odwrotne są poprawne w oknach. Czym dokładnie jest problem? Furhtermore polecam, aby w ogóle nie używać odwróconych ukształtowań w plikach POM. – khmarbaise

+0

Dzięki za komentarz. Aplikacja wiersza poleceń, która jest wykonywana przez ten skrypt mvn, oczekuje argumentu (katalogu) przy użyciu podwójnego ukośnika lub ukośnika. Tak więc pytanie brzmi: jak mogę uczynić project.basedir użyciem zamiast tego formatu forward slash? – carlosgmercado

Odpowiedz

0

Dobrze po patrząc na kilku stanowiskach pracy związanych z tą kwestią wydaje się, że jedynym i skutecznym sposobem na pokonanie tego problemu jest użycie listy właściwości i użycie ich odpowiednio do implementacji profilowania. Chociaż nie jest to eleganckie obejście, daje możliwość dynamicznego przydzielania ścieżek plików niezależnie od systemu operacyjnego/platformy używanej do uruchamiania programu maven.

0

masz jeden sposób na przeciążenie zmiennej lub zadeklarować nową zmienną oznaczać projekt basedir tak:

<basdir.home>C:/Talend_CI/talend/release/Routes/</basdir.home> 
+0

Tak, to jest moje pytanie do komentarza khmarbaise. W jaki sposób? – carlosgmercado

+0

Dzięki, ale to jest to samo, co wystarczy zastąpić argument statyczną zawartością, ponieważ nie będzie to celem używania dynamicznego mapowania. To, co szukam, to sposób na dynamiczną zmianę formatu tego, co kiedykolwiek $ project.basedir. – carlosgmercado

+0

Myślę, że nie da się tego zrobić !!! to zmienna maven, jeśli chcesz ją zmienić, musisz ją zmienić w rdzeniu Mavena – Inforedaster

Powiązane problemy