I'm using querydsl-maven-plugin on Windows and there's apparently no 
feasible way to specify a Windows file path in the JDBC URL settings.

What I have in the pom.xml is:

        <configuration>
          <jdbcDriver>org.h2.Driver</jdbcDriver>
          <jdbcUrl>jdbc:h2:mem:;INIT=RUNSCRIPT FROM 
'${project.basedir}/src/main/resources/create.sql'</jdbcUrl>
          <packageName>com.mycompany.model.querydsl</packageName>
          
<targetFolder>${project.basedir}/target/generated-sources/java</targetFolder>
        </configuration>

This works on Linux but not on Windows. The backslashes in the basedir get 
removed, as ConnectionInfo.readSettingsFromURL() calls 
StringUtils.arraySplit(), which removes the backslashes.

(Escaping the backslashes would be excessively difficult in Maven, 
unfortunately.)

I could change the configuration to use a file URI instead of a file path, 
like this:

          <jdbcUrl>jdbc:h2:mem:;INIT=RUNSCRIPT FROM 
'${project.baseUri}src/main/resources/create.sql'</jdbcUrl>

However it does not work either, because first the file: prefix is removed 
from the URL in FilePathDisk.translateFileName(), and then 
FilePathDisk.newInputStream() does not recognize the resulting 
"/C:/something" as a Windows path, because it only expects the filename to 
start with e.g. "C:/" and not "/C:/".
Possible fixes could be:

   - Do not remove the file: prefix for file URLs
   - Recognize file paths starting with "/C:" (or some other drive letter) 
   as Windows paths
   - Use Linux, do not use Windows

Using Cygwin doesn't help anything as Java anyway reports Windows file 
paths and not Cygwin file paths. A native Java isn't available for (64-bit) 
Cygwin.

Mikko

-- 
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to