package com.zte.sdn.oscp.yang.plugin.manager; import com.google.common.collect.Maps; import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugins.annotations.Component; import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.project.MavenProject; import org.apache.maven.rtinfo.RuntimeInformation; import org.sonatype.plexus.build.incremental.BuildContext; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Created by on 2017/6/7. */ public class BaseMavenPlugin extends AbstractMojo { public MavenPluginInfo pluginInfo; @Parameter(property = "basedir", defaultValue = "${basedir}") protected String baseDir; @Parameter(property = "resources", defaultValue = "${project.build.resources}") protected String resources; @Parameter(property = "outDirectory", defaultValue = "${project.build.outputDirectory}") protected String outDirectory; @Parameter(property = "testResources", defaultValue = "${project.build.testResources}") protected String testResources; @Parameter(property = "testOutDirectory", defaultValue = "${project.build.testOutputDirectory}") protected String testOutDirectory; @Parameter(property = "project", required = true, readonly = true, defaultValue = "${project}") protected MavenProject project; @Parameter(readonly = true, defaultValue = "${localRepository}") protected ArtifactRepository localRepository; @Parameter(readonly = true, defaultValue = "${project.remoteArtifactRepositories}") protected List<ArtifactRepository> remoteRepository; @Component protected RuntimeInformation runtime; @Component protected BuildContext context; public void execute() throws MojoExecutionException, MojoFailureException { pluginInfo = new MavenPluginInfo(baseDir, resources, outDirectory, testResources, testOutDirectory, project, localRepository, remoteRepository, runtime, context); } class MavenPluginInfo { protected String baseDir; protected String resources; protected String outDirectory; protected String testResources; protected String testOutDirectory; protected MavenProject project; protected ArtifactRepository localRepository; protected List<ArtifactRepository> remoteRepository; protected RuntimeInformation runtime; protected BuildContext context; protected Map<String, String> configuration = new HashMap<>(); public MavenPluginInfo(String baseDir, String resources, String outDirectory, String testResources, String testOutDirectory, MavenProject project, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepository, RuntimeInformation runtime, BuildContext context) { this.baseDir = baseDir; this.resources = resources; this.outDirectory = outDirectory; this.testResources = testResources; this.testOutDirectory = testOutDirectory; this.project = project; this.localRepository = localRepository; this.remoteRepository = remoteRepository; this.runtime = runtime; this.context = context; } public String getBaseDir() { return baseDir; } public void setBaseDir(String baseDir) { this.baseDir = baseDir; } public String getResources() { return resources; } public void setResources(String resources) { this.resources = resources; } public String getOutDirectory() { return outDirectory; } public void setOutDirectory(String outDirectory) { this.outDirectory = outDirectory; } public String getTestResources() { return testResources; } public void setTestResources(String testResources) { this.testResources = testResources; } public String getTestOutDirectory() { return testOutDirectory; } public void setTestOutDirectory(String testOutDirectory) { this.testOutDirectory = testOutDirectory; } public MavenProject getProject() { return project; } public void setProject(MavenProject project) { this.project = project; } public ArtifactRepository getLocalRepository() { return localRepository; } public void setLocalRepository(ArtifactRepository localRepository) { this.localRepository = localRepository; } public List<ArtifactRepository> getRemoteRepository() { return remoteRepository; } public void setRemoteRepository(List<ArtifactRepository> remoteRepository) { this.remoteRepository = remoteRepository; } public RuntimeInformation getRuntime() { return runtime; } public void setRuntime(RuntimeInformation runtime) { this.runtime = runtime; } public BuildContext getContext() { return context; } public void setContext(BuildContext context) { this.context = context; } public Map<String, String> getConfiguration() { return configuration; } public void setConfiguration(Map<String, String> configuration) { this.configuration = configuration; } public String getConfiguration(String key) { return this.configuration.get(key); } public void addConfiguration(String key, String value) { this.configuration.put(key, value); } } }
@Mojo(name = "yang2bean", defaultPhase = PROCESS_SOURCES, requiresDependencyResolution = COMPILE) public class YangUtilManager extends BaseMavenPlugin
<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> <parent> <groupId>com.zte.sdn.oscp</groupId> <artifactId>oscp-yang-plugins</artifactId> <version>1.0-SNAPSHOT</version> </parent> <artifactId>oscp-yang-maven-plugin</artifactId> <version>${yang.util.version}</version> <packaging>maven-plugin</packaging> <dependencies> <dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-core</artifactId> <version>3.3.9</version> </dependency> <dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-plugin-api</artifactId> <version>3.3.9</version> </dependency> <dependency> <groupId>org.apache.maven.plugin-tools</groupId> <artifactId>maven-plugin-annotations</artifactId> <version>3.4</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.felix</groupId> <artifactId>maven-scr-plugin</artifactId> <version>1.21.0</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-artifact</artifactId> <version>3.3.9</version> </dependency> <dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-project</artifactId> <version>3.0-alpha-2</version> </dependency> <dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-model</artifactId> <version>3.3.9</version> </dependency> <dependency> <groupId>org.sonatype.plexus</groupId> <artifactId>plexus-build-api</artifactId> <version>0.0.7</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>1.10</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.21</version> <scope>provided</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>1.10</version> <executions> <execution> <id>add-source</id> <phase>generate-sources</phase> <goals> <goal>add-source</goal> </goals> <configuration> <sources> <source> target/generated-sources/com/zte/sdn/oscp/yangutils/parser/antlrgencode </source> <sourceDirectory> target/generated-sources/com/zte/sdn/oscp/yangutils/parser/antlrgencode </sourceDirectory> </sources> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-plugin-plugin</artifactId> <version>3.4</version> <configuration> <skipErrorNoDescriptorsFound>true </skipErrorNoDescriptorsFound> </configuration> <executions> <execution> <phase>generate-sources</phase> <goals> <goal>descriptor</goal> </goals> </execution> </executions> </plugin> <!--<plugin>--> <!--<groupId>org.apache.felix</groupId>--> <!--<artifactId>maven-bundle-plugin</artifactId>--> <!--<version>2.5.4</version>--> <!--<extensions>true</extensions>--> <!--</plugin>--> </plugins> </build> </project>
Maven-Plugin开发实践
最新推荐文章于 2024-02-21 07:48:19 发布