Maven:使用execmaven插件并读取项目属性

Maven:使用execmaven插件并读取项目属性,maven,Maven,在这种情况下,我必须读取某个属性文件,然后调用一个外部程序 为了读取属性文件,我使用了,在验证阶段使用readprojectproperties 为了执行我正在使用的外部程序,调用exec:execgoal 但是,如果我调用“mvn exec:exec”,则不会调用验证阶段,因此不会读取属性 在我当前的场景中,我无法将exec:exec与任何特定的阶段联系起来(这是因为所有其他阶段都有非常具体的作业要处理,而我尝试使用exec:exec执行的内容并不映射到这些阶段中的任何一个。我尝试做的更多

在这种情况下,我必须读取某个属性文件,然后调用一个外部程序

  • 为了读取属性文件,我使用了,在验证阶段使用
    readprojectproperties

  • 为了执行我正在使用的外部程序,调用
    exec:exec
    goal

但是,如果我调用“mvn exec:exec”,则不会调用验证阶段,因此不会读取属性

在我当前的场景中,我无法将exec:exec与任何特定的阶段联系起来(这是因为所有其他阶段都有非常具体的作业要处理,而我尝试使用exec:exec执行的内容并不映射到这些阶段中的任何一个。我尝试做的更多的是一件独立的事情)

我找到的唯一解决方法是调用
mvn validate exec:exec
,这很有效,但我的问题是:

  • 将阶段和目标混合作为maven执行的一部分是一个好主意吗
  • 或者有没有办法让exec插件读取属性

  • 您是否可以使用配置文件将其与特定阶段联系起来,但仅限于特定情况/特定环境

    您可以使用用户或环境变量,或者显式地使用特定的概要文件来触发您对概要文件的选择。然后在这个新的配置文件中,您可以重新定义为拥有一个完全属于您自己的阶段

    真正创建自己的新生命周期阶段似乎是可能的,但并不容易:


    老实说,我会使用您的命令行,先调用validate,然后调用exec。我不知道有什么副作用,正如你所说,这只是一个局部的、独立的任务。

    谢谢你的回答,格雷厄姆。实际上,我想使用一个单独的配置文件。我唯一不喜欢的是我复制了我的属性插件(一次是在当前位置,另一次是在配置文件中)。我希望看看是否有一个更干净的解决方案,走这条路线。