【问题标题】:Maven Custom Plugin Creation and ExecutionMaven 自定义插件创建和执行
【发布时间】:2018-10-05 22:33:54
【问题描述】:

我正在尝试通过参考以下链接中的 apache 创建简单的 mojo 创建说明来创建自定义参数少的插件。

https://maven.apache.org/guides/plugin/guide-java-plugin-development.html#

但我无法使用 maven 目标运行相同的目标。请提出我所缺少的。由于我是 maven 新手,并且关于自定义 mavem 插件创建的教程并不多。关于这个主题的任何建议都会对我有所帮助。提前致谢。

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

   <groupId>sample.plugin</groupId>
  <artifactId>hello-maven-plugin</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>maven-plugin</packaging>

  <name>Sample Parameter-less Maven Plugin</name>

  <dependencies>
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-plugin-api</artifactId>
      <version>3.0</version>
    </dependency>

    <!-- dependencies to annotations -->
    <dependency>
      <groupId>org.apache.maven.plugin-tools</groupId>
      <artifactId>maven-plugin-annotations</artifactId>
      <version>3.4</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>

<build>
    <plugins>
      <plugin>
        <groupId>sample.plugin</groupId>
        <artifactId>hello-maven-plugin</artifactId>
        <version>1.0-SNAPSHOT</version>
        <executions>
          <execution>
            <goals>
              <goal>sayhi</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

GreetingMojo.java

package sample.plugin.hello_maven_plugin;

import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugins.annotations.Mojo;

/**
 * Says "Hi" to the user.
 *
 */
@Mojo( name = "sayhi")
public class GreetingMojo extends AbstractMojo
{
    public void execute() throws MojoExecutionException
    {
        getLog().info( "Hello, world." );
        System.out.println("My first maven plugin.");
    }
}

我正在尝试使用 package 命令和 mvn install 命令运行 pom.xml。

【问题讨论】:

  • 当您尝试运行目标时会发生什么?你如何运行 maven(例如,目标是在 POM 中配置为执行,还是在命令行上)?
  • 当我使用 package 命令运行 maven build 时出现错误,例如找不到工件 sample.plugin:hello-maven-plugin:jar:1.0-SNAPSHOT
  • 在其他项目中使用该插件之前,您是否mvn install
  • 实际上我正在尝试创建一个插件,以便可以在另一个项目中使用它。我在创建它时遇到了这个问题。
  • 在插件项目中运行mvn install。在您mvn install 插件之后,您需要将该插件声明为不同 maven 项目中的构建插件。然后,您可以从另一个项目运行插件目标,方法是在 POM 文件中配置插件,或者从命令行执行目标。

标签: java maven-plugin


【解决方案1】:

通常您不应该在您尝试构建的插件中执行插件目标。您无法使用 mvn install 构建插件的原因是因为您已将 maven 配置为期望插件已经构建。

此部分属于不同的 POM 文件,而不是插件 POM 文件。

<build>
  <plugins>
    <plugin>
      <groupId>sample.plugin</groupId>
      <artifactId>hello-maven-plugin</artifactId>
      <version>1.0-SNAPSHOT</version>
      <executions>
        <execution>
          <goals>
            <goal>sayhi</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

从插件 POM 中删除此部分后,您可以运行 mvn install 以在本地安装您的插件。安装后,您可以根据需要将该部分重新添加到 POM,但理想情况下,您可以将其添加到完全不同的 maven 项目并在该项目中执行 maven。

【讨论】:

  • 谢谢杰克。你是救生员。上帝保佑。
  • 嗨,Jake,我能够成功生成插件,但是当我尝试通过添加以下代码将插件导入新的 maven 项目时:sample.pluginhello-maven-plugin1.0-SNAPSHOTsayhi 我收到一条错误消息,提示没有可用的插件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-20
  • 1970-01-01
  • 2012-06-13
相关资源
最近更新 更多