tags:

views:

1232

answers:

1

One of the components is looking for the persistence.xml using the java.class.path system property. It is desired to keep this file separately from jars in the /conf folder.

When running the app with exec:exec, classpath is formed from the path to the main jar plus path to every dependency. I can't seem to figure out how to add the /conf entry to the classpath.

My command line looks like this:

mvn exec:exec -Dexec.executable="java" -Dexec.args="-classpath %classpath com.testjar.App"

I tried "arguments" parameter but the execution fails if I try to append anything to %classpath. I also tried to add a Class-Path entry to the manifest by specifying

<manifestEntries>
  <Class-Path>/conf</Class-Path>
</manifestEntries>

in the configuration for maven-jar-plugin, but the entry in the manifest has no effect on the value of java.class.path property.

+4  A: 

You may use the element 'resources' in the 'build' section of your POM file. For example

<build>
 <resources>
  <resource>
   <directory>src/main/resources/config</directory>
   <includes>
    <include>persistence.xml</include>
   </includes>
   <targetPath>/</targetPath>
  </resource>
 </resources>
 ...
</build>

This will copy the persistence.xml into the build output directory, i.e. it will place the persistence.xml on the classpath.

Boris Pavlović
Almost. but it needs to be `<targetPath></targetPath>` - At least on Windows the single / gives trouble.
Martin