Java 如何通过命令行在特定阶段和特定配置下执行maven插件?

Java 如何通过命令行在特定阶段和特定配置下执行maven插件?,java,maven,maven-3,maven-plugin,Java,Maven,Maven 3,Maven Plugin,我制作了一个maven插件,我希望通过命令行执行插件,而不改变基准项目中的任何内容(例如pom.xml)。目前,我正在使用mvn-groupId:artifactId:version:goal-test(我想在测试的同时执行我的插件)。但问题是: 我不知道如何通过命令行配置我的插件。例如,如果允许更改pom,则在中可以设置许多用户定义的配置,例如: ... ... ... 真的 com/foo/bar ... 如何使用命令行在中配置这些属性 我想在特定阶段启动插件(特别是在Lifecycl

我制作了一个maven插件,我希望通过命令行执行插件,而不改变基准项目中的任何内容(例如pom.xml)。目前,我正在使用
mvn-groupId:artifactId:version:goal-test
(我想在测试的同时执行我的插件)。但问题是:

  • 我不知道如何通过命令行配置我的插件。例如,如果允许更改pom,则在
    中可以设置许多用户定义的配置,例如:

    
    ...
    ...
    ...
    真的
    com/foo/bar
    ...
    
    如何使用命令行在
    中配置这些属性

  • 我想在特定阶段启动插件(特别是在
    LifecyclePhase.PROCESS\u TEST\u类中)。例如,My mojo类的实现方式如下:

    @Mojo(name=“goal”,defaultPhase=LifecyclePhase.PROCESS\u TEST\u CLASSES,requiresDependencyResolution=ResolutionScope.TEST,threadSafe=true)
    @执行(阶段=LifecycleBase.PROCESS\u TEST\u类)
    公共类myMojo扩展了MyAbstractMojo{
    ...
    }
    
    当我使用
    mvn-groupId:artifactId:version:goal-test
    mvn-test-groupId:artifactId:version:goal
    时,我遗憾地发现我的插件是在错误的阶段启动的。如何解决这个问题?有没有办法在这些命令行中显式声明desire阶段


  • 关于第一个问题:

    您可以读取插件中的属性,并且可以在命令行上使用
    -Dproperty=value
    设置属性

    关于第二个问题:

    如果直接在命令行上调用插件(如
    groupId:artifactId:version:goal
    ),它不属于任何阶段。所以如果你跑

    mvn组ID:artifactId:version:goal test

    首先运行插件,然后是从开始到测试的所有阶段,如果运行

    mvn测试组ID:artifactId:version:goal

    然后首先运行到
    test
    的所有阶段,然后运行插件


    您不能在命令行上为插件指定阶段。

    是否有办法在阶段
    过程\u测试\u类
    中执行我的插件目标?我认为
    PROCESS\u TEST\u CLASSES
    TEST
    的一个中间阶段。是的,但只能通过将您的插件添加到POM。如果您想在调用
    mvn TEST
    时运行的其他插件之间运行插件,那么您可能必须显式调用所有插件,也就是说,
    mvn首先插入您的插件,然后插入第二个插件,而不是使用
    test