gpt4 book ai didi

java - 在 Maven3 而不是 Maven2 中使用插件时 MavenProject 参数导致错误

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

请注意,我知道 Maven2 已停产,但我对生产方面的选择一无所知,所以请不要再告诉我切换到 Maven3,因为这没有回答这个问题以任何方式。

现在我们在公司使用 Maven2,但由于某些原因,我们的某些组件需要我们使用 Maven3。

我正在处理的插件被所有组件使用(通过在父 pom 中)并且在使用 Maven3 组件运行时会出错。

[ERROR] Failed to execute goal XXXX on project YYY: Unable to parse
configuration of mojo XXX for parameter project: Cannot find 'project' in class X.

“项目”声明为:

/**
* The Maven project.
*
* @since 2.0.2
* @parameter expression="${project}"
* @required
* @readonly
*/
private static MavenProject project;

并这样使用(在 Execute() 中):

LOGGER.info("==> Running XXX plugin for projet='{}'.",
project.getArtifactId());

它在 Maven2 中工作起来就像一个魅力

据我了解,没有为对象“MavenProject”的实例项目提供任何参数。

问题是为什么表达式在 Maven2 的 pom 中获得了正确的信息,但在 Maven3 中却不再是?

要添加更多信息并更准确,这里是从 super pom 继承的配置文件:

<profile>
<id>profileID</id>
<build>
<plugins>
<plugin>
<groupId>com.XXX</groupId>
<artifactId>maven-XXX-plugin</artifactId>
<executions>
<execution>
<phase>test-compile</phase>
<goals>
<goal>modelmanager</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>

对我来说,这不是任何问题的根源,因为这里只提供了阶段和目标,但我仍然提供它是为了更好地理解。

如果这有帮助,则没有在 pom 中为 maven 插件“plugin”指定版本。

执行是这样完成的: mvn [clean] [a phase] -PprofileID

最佳答案

您的方法有两个问题。首先,您使用的 static 在任何情况下都是错误的。此外,您应该更改为 Java 5 annotations而不是旧的 xdoclet 方式,您可以像下面那样做。

@Parameter (defaultValue = "${project}", required=true, readonly = true)
private MavenProject project;

了解可以定义哪些值可以在 evaluation reference 中找到.

如果你这样做正确,插件将适用于 Maven 2 和 Maven 3。除此之外,Maven 2 已被定义 End Of Life Maven 3 已经存在很长时间了(自 2010 年以来!)。

你应该知道 plugin tools它可以在那里支持你。

关于java - 在 Maven3 而不是 Maven2 中使用插件时 MavenProject 参数导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28086882/

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