All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.matrixweb.maven.plugins.packagejson.PackageJsonMojo Maven / Gradle / Ivy

package de.matrixweb.maven.plugins.packagejson;

import java.io.File;
import java.io.IOException;
import java.util.Map;
import java.util.Properties;

import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.project.MavenProject;
import org.codehaus.jackson.map.ObjectMapper;

@Mojo(name = "package-json", defaultPhase = LifecyclePhase.VALIDATE)
public final class PackageJsonMojo extends AbstractMojo {

  @Parameter(property = "skip.npm", defaultValue = "false")
  private Boolean skip;

  @Parameter(property = "workingDirectory", defaultValue = "${basedir}")
  private String workingDirectory;

  @Parameter(defaultValue = "${project}", readonly = true)
  MavenProject project;

  @Override
  public void execute() throws MojoExecutionException, MojoFailureException {
    if (!skip) {
      File packageJson = new File(workingDirectory, "package.json");
      if (packageJson.exists()) {
        try {
          Properties projectProps = project.getProperties();
          @SuppressWarnings("unchecked")
          Map props = new ObjectMapper().readValue(packageJson,
              Map.class);
          copyProperty("name", props, projectProps);
          copyProperty("version", props, projectProps);
        } catch (IOException e) {
          throw new MojoExecutionException("Failed to parse package.json", e);
        }
      }
    }
  }

  private void copyProperty(String name, Map props,
      Properties projectProps) {
    if (props.containsKey(name)) {
      projectProps.setProperty("package.json." + name, props.get(name)
          .toString());
    }
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy