通过maven为eclipse设置vm默认参数

时间:2010-12-16 10:59:09

标签: eclipse maven jvm-arguments maven-eclipse-plugin

我想指定-Djava.library.path =。/ src / main / resources的vm args以便自动获取dll,并且我想在maven中指定它,因此其他开发人员不必手动配置eclipse。

我想也许maven eclipse插件可能有帮助,所以我可以做类似

的事情
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-eclipse-plugin</artifactId>
  <version>2.7</version>
  <configuration>
    DO MAGIC HERE ???? <<-----
  </configuration>
</plugin>

但是我看不到从插件中添加VM args的方法。

我已修复此问题,以便在命令行中通过maven运行我的测试

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>2.4.3</version>
  <configuration>
    <argLine>-Xmx768m -Xms128m -Djava.library.path=${basedir}/src/main/resources/</argLine>
  </configuration>
</plugin>

我目前的解决方案是,我必须告诉开发人员手动将其添加到eclipse中,这看起来并不是很好。

有没有人对如何解决这个问题有任何想法。

欢呼声,

大卫。

2 个答案:

答案 0 :(得分:1)

也许这应该是一个更普遍的问题:

有没有办法向VM添加DLL而不必通过库路径指定它?

我已经读过将dll放在应用程序根目录中并在MANIFEST.MF中使用其哈希码指定DLL的情况,触发VM自动获取它。但这可能是完全错误的。

答案 1 :(得分:1)

我对您的问题的解释是您的应用程序正在加载DLL,并且此DLL位于资源文件夹中的项目中。正确的吗?

如果DLL位于类路径中的文件夹内并使用以下命令加载它,则可以获取DLL的完整路径:

// assuming dll is located in the default package
URI dllUri = this.getClass().getResource("/mydll.dll").toURI();
File dllFile = new File(dllUri);
System.load(dllFile.getCanonicalPath());

这与maven无关。只有两个问题:

  1. 解决方案与系统无关,因为您在参数中为getResource()
  2. 指定了文件的后缀
  3. 如果DLL位于JAR中,则无效。在这种情况下,我们构建一个JAR提取器,它将DLL解压缩到临时文件夹,并使用temp文件夹中的文件调用System.load()。