测试项目工件

注意:此示例改进了食谱以使用工件处理程序。

有时,您的 Mojo 使用项目工件和 ArtifactHandler 机制。例如,您可能需要过滤 Java 项目,即:

public class MyMojo
    extends AbstractMojo
{
    /**
     * The Maven Project.
     */
    @Component
    protected MavenProject project;

    public void execute()
        throws MojoExecutionException
    {
        ...

        ArtifactHandler artifactHandler = project.getArtifact().getArtifactHandler();
        if ( "java".equals( artifactHandler.getLanguage() ) )
        {
            ...
        }

        ...
     }
}

创建存根

public class MyArtifactHandlerStub
    extends DefaultArtifactHandler
{
    private String language;

    public String getLanguage()
    {
        if ( language == null )
        {
            language = "java";
        }

        return language;
    }

    public void setLanguage( String language )
    {
        this.language = language;
    }
}
public class MyArtifactStub
    extends ArtifactStub
{
    private String groupId;

    private String artifactId;

    private String version;

    private String packaging;

    private VersionRange versionRange;

    private ArtifactHandler handler;

    /**
     * @param groupId
     * @param artifactId
     * @param version
     * @param packaging
     */
    public ProjectInfoPluginArtifactStub( String groupId, String artifactId,
                                          String version, String packaging )
    {
        this.groupId = groupId;
        this.artifactId = artifactId;
        this.version = version;
        this.packaging = packaging;
        versionRange = VersionRange.createFromVersion( version );
    }

    /** {@inheritDoc} */
    public void setGroupId( String groupId )
    {
        this.groupId = groupId;
    }

    /** {@inheritDoc} */
    public String getGroupId()
    {
        return groupId;
    }

    /** {@inheritDoc} */
    public void setArtifactId( String artifactId )
    {
        this.artifactId = artifactId;
    }

    /** {@inheritDoc} */
    public String getArtifactId()
    {
        return artifactId;
    }

    /** {@inheritDoc} */
    public void setVersion( String version )
    {
        this.version = version;
    }

    /** {@inheritDoc} */
    public String getVersion()
    {
        return version;
    }

    /**
     * @param packaging
     */
    public void setPackaging( String packaging )
    {
        this.packaging = packaging;
    }

    /**
     * @return the packaging
     */
    public String getPackaging()
    {
        return packaging;
    }

    /** {@inheritDoc} */
    public VersionRange getVersionRange()
    {
        return versionRange;
    }

    /** {@inheritDoc} */
    public void setVersionRange( VersionRange versionRange )
    {
        this.versionRange = versionRange;
    }

    /** {@inheritDoc} */
    public ArtifactHandler getArtifactHandler()
    {
        return handler;
    }

    /** {@inheritDoc} */
    public void setArtifactHandler( ArtifactHandler handler )
    {
        this.handler = handler;
    }
}
public class MyProjectStub
    extends MavenProjectStub
{
    /**
     * Default constructor
     */
    public MyProjectStub()
    {
        ...

        Artifact artifact = new MyArtifactStub( getGroupId(), getArtifactId(),
                                                getVersion(), getPackaging() );
        artifact.setArtifactHandler( new MyArtifactHandlerStub() );
        setArtifact( artifact );

        ...
    }

    ...
}