如何从Plexus组件获取当前的MavenSession或MavenExecutionRequest

Tho*_*mas 58 components maven-2 mojo plexus maven

我创建了一个Plexus组件来容纳我想要创建的几个Mojos的通用逻辑.我已经能够localRepository从Mojo(和测试用例)传递信息和项目.

我想知道是否有办法从组件中获取MavenSessionMavenExecutionRequest从组件中传递它们作为Mojo的参数.我知道我的组件将从Maven Mojo运行.

我在这个例子中使用Maven 2.

Teh*_*ppo 1

我不相信存在,也不认为这是一个好主意。

根据我的理解,您的目标是拥有一个类似公共的组件,该组件将用于多个 mojo。这需要传入当前的 Maven 会话并用于随后传回一个值。

然而,Maven 的工作方式是,它在几乎类似容器的环境中运行来自插件的目标。每个插件都可以在特定的Maven Phase内运行,如<executions />. 这允许 Maven 分离构建、测试、检查、部署等的复杂性。调用mvn clean install,除非我错了,是两个单独的执行,一个运行clean 构建生命周期,然后运行install​​.

因此,假设MavenSession和后续MavenExecutionRequest代表先前调用中使用的相同实例是不安全的。 clean是一个单独的调用,其逻辑不应在新会话中维护。

所以,我本质上想说的是,虽然拥有一个共同的丛组件是一个很好的实践,特别是为了保持你的魔力的一致性,但每次提供适当的会话是正确的实践(几乎是ioc )。

我希望这就是您正在寻找的答案。相当长,但要理解为什么需要提供会话,请思考Maven