gpt4 book ai didi

java - Eclipse:父 pom 中自定义属性的子 pom 中的 Maven 构建错误

转载 作者:行者123 更新时间:2023-11-30 11:09:00 25 4
gpt4 key购买 nike

我正在从事一个基于 maven 的项目。我有一个父模块的父 pom 文件和一个子模块的子 pom 文件。在父模块中,我使用自定义属性 (databaseType),它在父 pom 中声明。

<properties>
<databaseType>${databaseType}</databaseType>
</properties>

在构建应用程序时,我将其作为 -D 参数传递并且构建成功。但是,当我在 eclipse 中创建一个 maven 项目时,我在子 pom 中遇到以下错误(尽管 maven 构建进行得很好)

Project build error: Resolving expression: '${databaseType}': Detected 
the following recursive expression cycle in 'databaseType': [databaseType]

可能是什么问题?感谢您的帮助。

最佳答案

问题是你用 -D 传递的参数和属性具有相同的名称。如果您提供参数,它会起作用,因为当 Maven 解析表达式时,它首先通过 -D databaseType 找到提供的参数。然后将该值分配给 <databaseType>属性(property)。如果缺少参数,maven 会尝试解析表达式,但只会找到 <databaseType> 的定义。同一个 pom 中的属性,它创建了一个圆圈。

Maven 和 Eclipse 要么使用不同的方法来解析此处的变量(这可能是 eclipse 中的错误),要么是由某些错误配置引起的。我猜想用 -D 传递变量由于某种原因不能在 Eclipse 中工作。

这个例子并没有真正做任何事情。如果${databaseType}可用,您不需要再次显式定义该属性。或者如果有意义的话,在父 pom 中使用不同的属性名称,如下所示:

<properties>
<databaseType>${defaultDatabaseType}</databaseType>
</properties>

如果缺少参数,这没有帮助。我会使用 enforcer 插件来确保属性已定义。

关于java - Eclipse:父 pom 中自定义属性的子 pom 中的 Maven 构建错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28300949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com