注意:此示例改进了食谱以使用工件处理程序。
有时,您的 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 ); ... } ... }