带有美元名称的Maven本地存储库目录-无法解析的属性?

时间:2018-09-21 09:33:07

标签: maven

目前,我正在调试一个烦人的行人情况,其中一个简单的

mvn dependency:tree

抱怨

The POM for com.bitplan.java:com.bitplan.bobase:jar:${bobase.version} is missing, no dependency information available

因此,似乎某个属性未在某处定义。但是相关的父pom显然具有:

<properties>
    <bobase.version>0.0.2</bobase.version>
</properties>

更有趣的是,我什至没有直接用这样的声明引用任何相关文件。

在此灾难中,本地存储库中有一个目录:

./com/bitplan/java/com.bitplan.bobase/${bobase.version}

出现。所以我很好奇,看看是否还有更多这些东西:

 cd $HOME/.m2/repository
 find . -type d | grep "\\$"

这一次给了我27个结果,例如

./net/sourceforge/htmlcleaner/htmlcleaner/${htmlcleaner.version}
./junit/junit/${junit.version}
./junit/junit/${junit4.version}
./org/hamcrest/hamcrest-all/${hamcrestall.version}
./org/apache/commons/commons-lang3/${commons.version}
./commons-io/commons-io/${commons-io.version}
./commons-io/commons-io/${commons.io.version}
./args4j/args4j/${args4j.version}

我只了解一种情况-commons.io.version一种-这是拼写错误,我已将其修复。所有其他变量都应取消引用ok,并且不应有任何此类目录。

是什么原因导致这种行家行为,以及如何避免?

我只找到一个相关的问题:

但这没有给我有用的提示

调试

find . -type d -name "*\$*" -exec echo -n {} \; -exec stat -f %Sm -t " "%Y-%m-%d {} \;

显示目录的最后修改时间。例如

./junit/junit/${junit.version} 2018-08-22
./junit/junit/${junit4.version} 2017-05-28

所以在我看来,这个问题似乎偶尔会发生。

1 个答案:

答案 0 :(得分:1)

 mvn deploy
如果pom的版本尚未升级,则必须使用父pom的

 mvn install

是不够的。变量的解析将在存储库的“旧”设置上完成。