2014-12-03 10 views
6

ho bisogno di passare una directory utilizzando il formato Windows come un argomento per un exec su Maven, ecco un estratto del 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> 

il problema che avevo incontrato è che il $ {} project.basedir risolvere a singola barra:

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

e ho bisogno di passare con doppia barra rovesciata. Come posso ottenere ciò usando $ {project.basedir}?

+0

Le singole barre posteriori sono corrette in Windows. Qual è esattamente il problema? Furhtermore raccomando di non usare affatto i backslash nei file pom. – khmarbaise

+0

Grazie per il commento. L'applicazione a riga di comando, che viene eseguita da questo script mvn, si aspetta un argomento (directory) usando double backslashes o forward slash. Quindi la domanda sarà: come posso far sì che project.basedir usi invece il formato slash in avanti? – carlosgmercado

risposta

0

Ebbene dopo aver cercato per diversi i commenti su questo problema sembra essere che l'unico ed un modo efficace per superare questo problema è usare una lista di proprietà e usarle di conseguenza implementando la profilazione. Sebbene non sia una soluzione elegante, ti offre la possibilità di assegnare dinamicamente i percorsi dei file indipendentemente dal sistema operativo/piattaforma utilizzato per eseguire Maven.

0

avete un modo per sovraccaricare la variabile o di dichiarare una nuova variabile per indicare il progetto basedir come questo:

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

Sì, questa è la mia domanda per il commento di khmarbaise. Come? – carlosgmercado

+0

Grazie, ma è lo stesso che basta sostituire l'argomento con il contenuto statico in quanto annullerà lo scopo di utilizzare la mappatura dinamica. Quello che sto cercando è un modo per cambiare dinamicamente il formato di quello che mai {{project.basedir}} risolve. – carlosgmercado

+0

penso che non sia possibile farlo !!! è una variabile di tipo Maven, se vuoi cambiarla devi cambiarla nel core Maven – Inforedaster

Problemi correlati