- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个外部库需要与我的 Java 项目中的测试动态链接。该项目是使用 maven 设置的,我需要将以下内容添加到 eclipse 中的 vm 参数中才能通过测试:
-Djava.library.path=${env_var:HOME}/.m2/repository/natives/dist/lib -ea
不幸的是,这意味着从 maven 运行测试使用:mvn test
总是会失败。
解决方法是调用 mvn
用-DargLine
像这样的论点:
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>
最佳答案
经过一些研究,我发现了一个解决我的问题的好方法。
在 maven 中你的 settings.xml
文件,您可以为 localRepository
定义一个位置如果您什么都不设置,这里是默认值:
如您所见,这至少匹配我尝试设置的目录的第一部分:/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 可以运行这些测试,而无需用户指定动态链接库的位置。您还可以通过添加另一个配置文件来处理使用不同操作系统的用户。
注意:关于我关于 <argLine>
的问题更早。我想我只是用错了它 .pom
关于java - 是否有可能始终将 -Djava.library.path 从 POM 文件内部传递给 Maven 测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7854732/
我关于 Spring Boot jar 的问题。 在生产机器上运行 jar 时: java -jar xyz.jar 它不响应我的请求。因为它正在监听 ipv6。 但是当我运行应用程序时 java -
我希望我的小程序使用在 user.home/.java.policy 下创建的策略文件。我很困惑使用该策略文件的正确参数是什么? -Djava.security.policy=file:${user.
我的 Java 应用程序使用 JNI 访问一些 C++ native 代码。我特别需要这个库 symbolic_graph_jni(由我编写),它需要 glog(来自谷歌)。我确认 libsymbol
如何在 Eclipse 项目中指向两个不同的 java.library.path - 运行配置?我需要这两个库: -Djava.library.path=/opt/hdf-java/build/bin
假设我想使用额外的“-Djava.fizz.buzz=3”JVM 参数来运行 Grails (2.3+) 应用程序。 是不是很简单: grails run-app -Djava.fizz.buzz=3
使用 Java 7 Update 5 总是会导致 Java 应用程序(对我来说,特别是 MineCraft)的复杂化,因为它尝试使用 IPv6。禁用 IPv6 根本无法保存。 我发现的每一点信息都在说
我试图在 setenv.sh 文件中指向一个 -Djava.library.path。我的库在 usr/lib64 文件夹中,但是当我尝试做类似的事情时: EXPORTS JAVA_OPTS="-Dc
我需要在执行 .jar 应用程序时链接特定的库。我修改了变量 LD_LIBRARY_PATH 并添加(作为第一个目录)包含所需库的文件夹的路径。我还尝试使用选项 -Djava.library.path
我正在将一个库加载到我的 Java 代码中。我已将库放在 sytem 32 文件夹中,并且还设置了 -Djava.library.path。 早些时候这段代码正在运行 try{ Sys
我希望以编程方式设置 VM 参数 Djava.library.path。如果无法做到这一点,有什么替代方案(如果有的话)? 最佳答案 用这个方法很容易解决: public static void ad
我有一个 Java 应用程序,它依赖于一些用 C 语言编写的遗留代码,它通过 JNI 访问这些代码。 native 库存储在一个子目录中(实际上,有两个子目录:一个包含 32 位库,一个包含 64 位
在 cmd 中执行涉及 Ionic 和 Android 的任何操作时,例如,出现此错误Ionic 构建 Android,或 Ionic 模拟 Android 等...该错误意味着什么,它是否重要,以及
我无法让服务提供者接口(interface)从同一目录中的另一个 JAR 加载实现。它仅在我使用 -Djava.ext.dirs= 时有效。在命令行上。没有它就不能工作吗? 我有以下界面: packa
我想将 Java 8 Spring Boot 项目升级到 Java 11。它使用 Gradle 4.9(包装器)。我使用的是 Intellij 2019.1 社区版。 下载 Java 11 后,当我运
我正在使用校园 wifi 进行开发,最近我搬到了 ubuntu,由于学校代理,我的 netbean 无法连接到互联网。我在 Windows 上遇到了同样的问题,我通过在 cmd 中输入此命令“setx
我正在尝试将 IBM 的 CPLEX 库与我的 java 应用程序集成。现在,我只是尝试创建一个 IloCplex 对象。我添加了 Cplex.jar,它编译得很好,但是当我运行它时: public
Linux环境下如何设置? 我不断收到以下错误。 我假设它是因为我必须设置 -Djava 路径。 在 Eclipse 中我在运行配置的参数中设置。 java.lang.UnsatisfiedLinkE
我刚刚将我的发行版从 ubuntu 更改为 slackware,但位于/home 分区的 eclipse 文件夹仍然相同,我没有格式化它。 eclipse.ini 上有一个 -Djava.librar
我想将 -Djava.library.path VM 选项设置为特定文件夹。但是,它与我的项目文件夹无关,因此我可以这样说: -Djava.library.path=native\windows (文
线程“main”中的异常 java.lang.RuntimeException: native snappy library not available: this version of libhad
我是一名优秀的程序员,十分优秀!