【问题标题】:Is it possible consistently pass -Djava.library.path to a maven test from inside a POM file?是否可以从 POM 文件中始终将 -Djava.library.path 传递给 maven 测试?
【发布时间】:2011-12-12 20:59:01
【问题描述】:

我有一个外部库,需要与我的 java 项目中的测试动态链接。该项目是使用 maven 设置的,我需要在 eclipse 中将以下内容添加到我的 vm 参数中以使测试通过:

-Djava.library.path=${env_var:HOME}/.m2/repository/natives/dist/lib -ea

不幸的是,这意味着使用:mvn test 从 maven 运行测试总是会失败。

一种解决方法是使用-DargLine 参数调用mvn,如下所示:

mvn test -DargLine="-Djava.library.path=/Users/rob/.m2/repository/natives/dist/lib -ea"

但是,显然这有特定于我的机器的问题,所以我不能将它直接放在 pom 文件中。我想我正在寻找的是一种在每台机器上修改该字符串的方法,就像第一行为 eclipse 所做的那样。

我也很好奇如何将其放入 POM 文件中,我尝试将其放入 <argLine> 标记中,但这似乎不起作用,是不是我遗漏了什么:

<argLine>-Djava.library.path=/Users/rob/.m2/repository/natives/dist/lib -ea</argLine>

【问题讨论】:

    标签: java eclipse bash shell maven


    【解决方案1】:

    经过一些研究,我发现了一个不错的解决方案。

    在你的settings.xml 文件中,你可以为localRepository 定义一个位置,如果你什么都不设置,这里是默认值:

    • Unix/Mac OS X – ~/.m2
    • Windows – C:\Documents and Settings\username.m2

    如您所见,这至少与我尝试设置的目录的第一部分匹配:/Users/rob/.m2

    由于动态链接是特定于操作系统的,您可能还想为备用路径后缀设置配置文件。您可以像这样在.pom 中执行此操作:

    <profile>
        <id>OSX</id>
            <activation>
                <os>
                    <family>mac</family>
                </os>
            </activation>
        <properties>
            <dynamic.libLoc>${settings.localRepository}/natives/dist/lib</dynamic.libLoc>
        </properties>
    </profile>
    

    然后您可以在.pom 中为您要测试的项目使用此属性。在插件类别下,您可以添加:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <argLine>-Djava.library.path=${dynamic.libLoc}</argLine>
        </configuration>
    </plugin>
    

    现在 maven 可以运行这些测试,而无需用户指定动态链接库的位置。您还可以通过添加另一个配置文件来处理使用不同操作系统的用户。

    注意:关于我之前与&lt;argLine&gt; 的问题。我想我只是用错了.pom

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-12
      • 2017-07-26
      • 1970-01-01
      • 2020-10-11
      • 1970-01-01
      • 2014-07-12
      • 2018-04-17
      相关资源
      最近更新 更多