views:

71

answers:

2

In our project we use Eclipse launch configurations which are under version control to be shared with all developers.
Now it is necessary to include an external archive to a launch configuration file's classpath. Fortunately the required archive is in every developer's local Maven repository. I already found out that there is a classpath variable called M2_REPO which references to the local Maven repository (being valid for any developer).

But how to use this variable in the following classpath definition to replace the absolute path?

<listAttribute key="org.eclipse.jdt.launching.CLASSPATH">
    ...
    <listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&lt;runtimeClasspathEntry externalArchive=&quot;C:/Dokumente und Einstellungen/050967/.m2/repository/com/google/gwt/gwt-dev/2.0.3/gwt-dev-2.0.3.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;"/>
    ...
</listAttribute>

Or is there a way to include an environment variable (e.g. Windows' %USERPROFILE% could help)?

A: 

You could load that value from maven properties.

Maven stores repository path in maven.repo.local property.

Place ${maven.repo.local} into your configuration file.

<listAttribute key="org.eclipse.jdt.launching.CLASSPATH">
    ...
    <listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&lt;runtimeClasspathEntry externalArchive=&quot;${${maven.repo.local}}/com/google/gwt/gwt-dev/2.0.3/gwt-dev-2.0.3.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;"/>
    ...
</listAttribute>

Then setup filtering in pom.xml for your configuration file so ${maven.repo.local} will be replaced with property value.

amra
Unfortunately that does not work. When trying to run my launch file from Eclipse's "Run..." menu I get an error message like "The archive ${${maven.repo.local}}/com/google/... does not exist".Obviously the variable is not resolved.Any other ideas?
thommyslaw
+2  A: 

Edit your launch configuration. Go to the "classpath" tab. Focus on "User Entries". Click the "Advanced" button.

  • To add an entry based on a classpath variable, select Add classpath variable and click OK. A dialog will open. Focus on M2_REPO and click the "Extend" button. Select your JAR file.
  • To add an entry based on a system environment variable, select Add variable string, and in the editbox below, type: ${env_var:your-environment-variable-name}/path-to-jar. For example, if your system environment variable is MYVAR and the JAR file is under subdir/myfile.jar, you should type ${env_var:MYVAR}/subdir/myfile.jar.
Isaac
Great. That's it! Thank you Isaac!
thommyslaw