【发布时间】:2020-11-04 21:57:01
【问题描述】:
更新:
如果我将 ${env.JAVA_HOME} 更改为系统属性 ${java.home} 然后它会执行 maven-dependency-plugin unpack 和 copy 任务。但现在它在 maven-antrun-plugin:1.8:run (build-content) 上失败了。
[ERROR] one of its dependencies could not be resolved: Could not find artifact ... at specified path ... -> [Help 1]
为什么要在 JRE 文件夹中查找我的 jar 文件?
/{path to jdk}/Contents/Home/jre/lib/...
它就坐在这里:
/{path to jdk}/Contents/Home/lib
我的 pom.xml 文件没有读取我的 JAVA_HOME 环境变量。我在 Mac 上。这是条目:
<dependencies>
<dependency>
<groupId>{groupId}</groupId>
<artifactId>{artifactId}</artifactId>
<version>${version}</version>
<scope>system</scope>
<systemPath>${env.JAVA_HOME}/lib/myPersonalJar.jar</systemPath>
</dependency>
</dependencies>
这是错误:
[ERROR] [ERROR] Some problems were encountered while processing the POMs:
[ERROR] 'build.plugins.plugin[org.apache.maven.plugins:maven-antrun-plugin].dependencies.dependency.systemPath' for ... must specify an absolute path but is ${env.JAVA_HOME}/lib/myPersonalJar.jar
在 iTerm 应用程序中,我可以回显 $JAVA_HOME,它指向正确的位置。
当我将 systemPath 硬编码到我的 Java 主页时,它工作得很好。我不知道为什么。为了提供一些上下文,我的 ant 构建文件也没有读取我的环境变量。
我错过了一些愚蠢的简单东西吗?
【问题讨论】:
-
当然,JAVA_HOME是在你的环境中显式设置的?您使用的是哪个 Java 版本/发行版?许多将 JRE 作为 JDK 的子目录。因此,看起来您的 JAVA_HOME 被设置为 /{path to jdk}/Contents/Home/jre 而不是 /{path to jdk}/Contents/Home。
-
jre 是 jdk 的子目录。并且 JAVA_HOME 正确显示为:/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home。但它最初并没有像以前那样失败。它克服了初始错误,开始添加依赖项,然后失败。似乎是依赖导致了这个问题。
-
是的,您更新的编辑显示 Maven 在 1.7 中寻找 tools.jar,但您的 JAVA_HOME 是 1.8(在 jre 子目录下)。我将发布我用来为构建和 antrun 添加依赖项的配置文件。
-
有趣。如果我查看项目特定设置 --> java 编译器,则合规级别为 1.7。这是什么原因造成的?
-
肯定有问题,而且 antrun 很挑剔。