2010-10-06 17 views
9

J'ai une propriété définie comme ceci:Comment convertir séparateur de fichier dans maven

<properties> 
    <main.basedir>${project.parent.basedir}</main.basedir> 
</properties> 

Depuis que je l'utilise Windows comme système d'exploitation, il contient des barres obliques inverses. Je veux ajouter ce chemin à un domaine glassfish comme option JVM (en utilisant glassfish maven plugin). Le problème est que asadmin ne peut consommer que slash comme séparateur, et tous mes backslashes continuent de disparaître. Comment puis-je définir une propriété avec exactement le même contenu avec des barres obliques?

Répondre

11

Je ne pense pas qu'il existe une manière non-programmatique de faire cela. Je suggère donc un groovy one-liner avec le Maven GMaven plugin (GMaven est généralement le moyen le plus simple d'intégrer le code de programmation dans un pom):

<plugin> 
    <groupId>org.codehaus.gmaven</groupId> 
    <artifactId>gmaven-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>setproperty</id> 
      <phase>validate</phase> 
      <goals> 
       <goal>execute</goal> 
      </goals> 
      <configuration> 
       <source> 
pom.properties['main.basedir']=project.parent.basedir.absolutePath.replace('\\','/'); 
       </source> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
+0

Merci beaucoup. Travaux. –

+0

Oh l'enfer. Je ne sais même pas ce qui s'est passé, mais j'ai commencé à recevoir des erreurs pour exactement les mêmes choses que vous avez suggérées: [INFO] groovy.lang.MissingMethodException: Aucune signature de méthode: java.io.File.absolutePath() est applicable pour l'argument types:() valeurs: []. Rien n'est changé et ne fonctionne plus –

+0

mon erreur. c'est soit 'absolutePath' sans parenthèses, soit' getAbsolutePath() '. fixé mon code –

2

Juste une mise à jour à la réponse de Sean, j'ai dû faire quelques ajustements mineurs dans afin de l'adapter à la dernière version du plugin groovy maven:

<plugin> 
      <groupId>org.codehaus.gmaven</groupId> 
      <artifactId>groovy-maven-plugin</artifactId> 
      <dependencies> 
      <dependency> 
       <groupId>org.codehaus.groovy</groupId> 
       <artifactId>groovy-all</artifactId> 
       <version>2.0.1</version> 
      </dependency> 
      </dependencies> 
      <executions> 
       <execution> 
        <id>setproperty</id> 
        <phase>validate</phase> 
        <goals> 
         <goal>execute</goal> 
        </goals> 
        <configuration> 
         <source> 
     project.properties['basedir']=project.parent.basedir.absolutePath.replace('\\','/'); 
         </source> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin>