Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Maven中重命名目标?_Maven_Maven 2_Maven Plugin - Fatal编程技术网

如何在Maven中重命名目标?

如何在Maven中重命名目标?,maven,maven-2,maven-plugin,Maven,Maven 2,Maven Plugin,在Maven文档中,描述了输出当前时间的display:time目标。插件如下所示: ... <plugin> <groupId>com.mycompany.example</groupId> <artifactId>maven-touch-plugin</artifactId> <version>1.0</version> <executions> <execution

在Maven文档中,描述了输出当前时间的
display:time
目标。插件如下所示:

...
<plugin>
  <groupId>com.mycompany.example</groupId>
  <artifactId>maven-touch-plugin</artifactId>
  <version>1.0</version>
  <executions>
    <execution>
      <phase>process-test-resources</phase>
      <goals>
        <goal>timestamp</goal>
      </goals>
    </execution>
  </executions>
</plugin>
...
。。。
com.mycompany.example
这表明这是不可能的。)


给你的第一个。目标的名称由插件定义(有一个注释)。如果你有源代码,你就改变它。 看看XML,你不知道插件只定义了XML中给出的目标是什么。最好的位置是查看插件的文档。 第二:你必须检查文件。通常pluginname:goal…可能需要指定插件的完整路径(groupId)。
第三点:通常应该能够使用帮助插件查看。

我认为文档可能有输入错误。插件目标由
插件名称:目标名称
指定。该XML将目标
touch:timestamp
绑定到
流程测试资源
阶段。该片段与
display:time
无关

  • 据我所知,不可能重新命名maven的进球。(这似乎只会让事情变得更加混乱。)插件源代码是定义目标的东西,而不是pom。pom中的标记只允许您将插件目标绑定到阶段,或者如果目标已经有默认阶段,则重新绑定目标

  • 您应该能够使用
    前缀:goalName
    运行目标。通常,前缀只是artifactId中介于“maven-”和“-plugin”之间的任何内容。e、 g.
    触摸:时间戳
    。这在一些情况下很复杂,因为插件作者可以指定与插件名称不同的“goalPrefix”,但我从来没有遇到过这样的问题

  • 了解插件定义的目标以及默认情况下它们绑定到的阶段的最佳方法是阅读插件文档

  • 如何将目标的名称更改为,例如,
    foo:bar
    ?(为什么
    display
    time
    都不出现在XML片段中的任何地方?通过查看片段,您如何知道它定义了什么目标?)

    准确地说,在
    foo:bar
    中,
    foo
    是“插件目标前缀”,而
    bar
    是“目标”。后者来自命名约定(或者可以是1),前者来自于实现插件逻辑的类<;code>BarMojo
    的注释。大概是这样的:

    /**
     * Do the wonderful bar.
     * @goal bar
     * @requiresProject false
     */
    public class BarMojo extends AbstractMojo
    {
        ...
    }
    
    mvn com.mycompany.example:maven-touch-plugin:1.0:timestamp
    
    改变目标需要修改插件的mojo注释并重建它

    关于您链接到的文档,目标
    时间
    和将
    时间戳
    目标绑定到
    流程测试资源
    阶段的XML片段之间显然不匹配。这一定是打字错误

    如何手动运行此目标?(对于类似的构造,mvn display的等价物:时间有时起作用,但这并不一致。)

    你可以这样称呼它:

    /**
     * Do the wonderful bar.
     * @goal bar
     * @requiresProject false
     */
    public class BarMojo extends AbstractMojo
    {
        ...
    }
    
    mvn com.mycompany.example:maven-touch-plugin:1.0:timestamp
    
    您可以通过将
    com.mycompany.example
    添加到
    settings.xml
    中的来缩短此命令(
    org.apache.maven.plugins
    org.codehaus.mojo
    在默认情况下声明,以防您想知道这些插件如何工作)

    建议遵循约定,但正如我所说,前缀也可以是

    我怎样才能知道这个目标是否存在

    检查插件文档(源自插件源代码)或插件源代码


    请注意,Maven书中提到的页面底部也有一个打字错误。使用自定义前缀执行插件的方法应该是
    mvn blah:echo
    (请参阅)。

    如何将目标名称更改为例如foo:bar?(为什么XML片段中既没有显示也没有时间?通过查看片段,您如何知道它定义了什么目标?)

    要将前缀的名称更改为“foo”,您需要配置maven插件“plugin”

    将插件前缀添加到settings.xml文件中

    <pluginGroups>
      <pluginGroup>com.mycompany.example</pluginGroup>
    </pluginGroups>
    
    或使用插件前缀设置(如上)

    我怎样才能知道这个目标是否存在?(即列出可用目标)

    将以下内容添加到maven-plugin元素中,您可以使用foo:help打印目标列表

    <plugin>
    ...
    <executions>
    <execution>
    <id>generated-helpmojo</id>
    <goals>
    <goal>helpmojo</goal>
    </goals>
    </execution>
    </executions>
    </plugin>
    
    
    ...
    生成的helpmojo
    帮助魔咒
    
    <pluginGroups>
      <pluginGroup>com.mycompany.example</pluginGroup>
    </pluginGroups>
    
    mvn com.mycompany.example:foo:bar
    
    mvn foo:bar
    
    <plugin>
    ...
    <executions>
    <execution>
    <id>generated-helpmojo</id>
    <goals>
    <goal>helpmojo</goal>
    </goals>
    </execution>
    </executions>
    </plugin>