001 package org.kuali.student.contract.mojo;
002
003 import java.io.File;
004 import java.net.MalformedURLException;
005 import java.net.URL;
006 import java.net.URLClassLoader;
007 import java.util.Collection;
008 import java.util.List;
009
010 import org.apache.maven.artifact.DependencyResolutionRequiredException;
011 import org.apache.maven.model.Dependency;
012 import org.apache.maven.plugin.AbstractMojo;
013 import org.apache.maven.plugin.MojoExecutionException;
014 import org.apache.maven.project.MavenProject;
015 import org.joda.time.DateTime;
016 import org.kuali.student.common.mojo.AbstractKSMojo;
017 import org.kuali.student.contract.model.ServiceContractModel;
018 import org.kuali.student.contract.model.impl.ServiceContractModelCache;
019 import org.kuali.student.contract.model.impl.ServiceContractModelQDoxLoader;
020 import org.kuali.student.contract.model.util.DateUtility;
021 import org.kuali.student.contract.model.util.HtmlContractWriter;
022 import org.kuali.student.contract.model.validation.ServiceContractModelValidator;
023
024 /**
025 * The plugin entrypoint which is used to generate the html wiki doc of the service interface.
026 * @goal kscontractdoc
027 * @phase site
028 * @requiresProject true
029 */
030 public class KSContractDocMojo extends AbstractKSMojo {
031
032 /**
033 * @parameter expression="${htmlDirectory}" default-value="${project.build.directory}/site/services/contractdocs"
034 */
035 private File htmlDirectory;
036
037 public File getHtmlDirectory() {
038 return htmlDirectory;
039 }
040
041 public void setHtmlDirectory(File htmlDirectory) {
042 this.htmlDirectory = htmlDirectory;
043 }
044
045 @Override
046 public void execute() throws MojoExecutionException {
047
048 MavenProject project = (MavenProject) getPluginContext().get("project");
049
050 String formattedDate = DateUtility.asYMDHMInEasternTimeZone(new DateTime());
051
052 ServiceContractModel model = null;
053 HtmlContractWriter writer = null;
054 getLog().info("publishing wiki contracts");
055 model = this.getModel();
056 this.validate(model);
057 getLog().info("publishing to = " + this.htmlDirectory.toString());
058 writer = new HtmlContractWriter(htmlDirectory.toString(), model);
059 writer.write(project.getVersion(), formattedDate);
060
061
062 }
063 }