From 2f7dae63bbd43bd90bcba64d5c4fd949472d3202 Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Thu, 24 Mar 2011 01:48:04 +0100 Subject: [PATCH] fix link to javadoc in maven modules, archiving test javadoc test too , still need to display link to test javadoc --- .gitignore | 1 + .../java/hudson/tasks/JavadocArchiver.java | 6 +- .../java/hudson/maven/RedeployPublisher.java | 1 + .../maven/reporters/MavenJavadocArchiver.java | 73 ++++++++++++++++--- .../maven/reporters/Messages.properties | 1 + 5 files changed, 70 insertions(+), 12 deletions(-) diff --git a/.gitignore b/.gitignore index 9b8944bfce..d84681e336 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ work *.iws *.ipr .idea +out # eclipse project file .settings diff --git a/core/src/main/java/hudson/tasks/JavadocArchiver.java b/core/src/main/java/hudson/tasks/JavadocArchiver.java index 00f041e575..aaa0d4e6a6 100644 --- a/core/src/main/java/hudson/tasks/JavadocArchiver.java +++ b/core/src/main/java/hudson/tasks/JavadocArchiver.java @@ -133,14 +133,16 @@ public class JavadocArchiver extends Recorder { } public String getDisplayName() { - if (new File(dir(), "help-doc.html").exists()) + File dir = dir(); + if (dir != null && new File(dir, "help-doc.html").exists()) return Messages.JavadocArchiver_DisplayName_Javadoc(); else return Messages.JavadocArchiver_DisplayName_Generic(); } public String getIconFileName() { - if(dir().exists()) + File dir = dir(); + if(dir != null && dir.exists()) return "help.gif"; else // hide it since we don't have javadoc yet. diff --git a/maven-plugin/src/main/java/hudson/maven/RedeployPublisher.java b/maven-plugin/src/main/java/hudson/maven/RedeployPublisher.java index 2746d20c8d..162ea6fab9 100644 --- a/maven-plugin/src/main/java/hudson/maven/RedeployPublisher.java +++ b/maven-plugin/src/main/java/hudson/maven/RedeployPublisher.java @@ -437,4 +437,5 @@ public class RedeployPublisher extends Recorder { // noop } } + } diff --git a/maven-plugin/src/main/java/hudson/maven/reporters/MavenJavadocArchiver.java b/maven-plugin/src/main/java/hudson/maven/reporters/MavenJavadocArchiver.java index 6d5edb4b94..47c182b4b4 100644 --- a/maven-plugin/src/main/java/hudson/maven/reporters/MavenJavadocArchiver.java +++ b/maven-plugin/src/main/java/hudson/maven/reporters/MavenJavadocArchiver.java @@ -33,17 +33,17 @@ import hudson.maven.MavenReporterDescriptor; import hudson.maven.MojoInfo; import hudson.maven.MavenModuleSet; import hudson.maven.MavenReportInfo; -import hudson.model.Action; -import hudson.model.BuildListener; -import hudson.model.Result; +import hudson.model.*; import hudson.tasks.JavadocArchiver.JavadocAction; import org.apache.maven.project.MavenProject; import org.codehaus.plexus.component.configurator.ComponentConfigurationException; import java.io.File; import java.io.IOException; +import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.List; /** * Records the javadoc and archives it. @@ -51,13 +51,24 @@ import java.util.Collections; * @author Kohsuke Kawaguchi */ public class MavenJavadocArchiver extends MavenReporter { + + + private boolean aggregated = false; + + private boolean testJavadoc = false; + + private FilePath target; + + private FilePath targetTestJavadoc; + public boolean postExecute(MavenBuildProxy build, MavenProject pom, MojoInfo mojo, BuildListener listener, Throwable error) throws InterruptedException, IOException { if(!mojo.is("org.apache.maven.plugins","maven-javadoc-plugin","javadoc") - && !mojo.is("org.apache.maven.plugins","maven-javadoc-plugin","aggregate")) + && !mojo.is("org.apache.maven.plugins","maven-javadoc-plugin","aggregate") + && !mojo.is("org.apache.maven.plugins","maven-javadoc-plugin","test-javadoc") + && !mojo.is("org.apache.maven.plugins","maven-javadoc-plugin","test-aggregate")) return true; File destDir; - boolean aggregated; try { aggregated = mojo.getConfigurationValue("aggregate",Boolean.class) || mojo.getGoal().equals("aggregate"); if(aggregated && !pom.isExecutionRoot()) @@ -73,21 +84,25 @@ public class MavenJavadocArchiver extends MavenReporter { } if(destDir.exists()) { + testJavadoc = "test-javadoc".equals(mojo.getGoal()); // javadoc:javadoc just skips itself when the current project is not a java project - FilePath target; + ; if(aggregated) { // store at MavenModuleSet level. listener.getLogger().println("[JENKINS] Archiving aggregated javadoc"); target = build.getModuleSetRootDir(); } else { - listener.getLogger().println("[JENKINS] Archiving javadoc"); + + listener.getLogger().println("[JENKINS] Archiving " + + (!testJavadoc? "javadoc" : "test-javadoc")); target = build.getProjectRootDir(); } target = target.child("javadoc"); + if (testJavadoc) targetTestJavadoc = target.child("test-javadoc"); try { - new FilePath(destDir).copyRecursiveTo("**/*",target); + new FilePath(destDir).copyRecursiveTo("**/*",testJavadoc ? targetTestJavadoc : target); } catch (IOException e) { Util.displayIOException(e,listener); e.printStackTrace(listener.fatalError(Messages.MavenJavadocArchiver_FailedToCopy(destDir,target))); @@ -110,11 +125,49 @@ public class MavenJavadocArchiver extends MavenReporter { } public Collection getProjectActions(MavenModule project) { - return Collections.singleton(new JavadocAction(project)); + // TODO test javadoc too + List actions = new ArrayList(); + actions.add((new MavenJavadocAction(project,this.testJavadoc,this.target,this.targetTestJavadoc))); + // adding action for test javadoc link display + if (testJavadoc) actions.add((new MavenJavadocAction(project,this.testJavadoc,this.target,this.targetTestJavadoc))); + return actions; } public Action getAggregatedProjectAction(MavenModuleSet project) { - return new JavadocAction(project); + // TODO javadoc test too + return new MavenJavadocAction(project,this.testJavadoc,this.target,this.targetTestJavadoc); + } + + public static class MavenJavadocAction extends JavadocAction { + private final AbstractItem abstractItem; + private final boolean testJavadoc; + private final FilePath target; + private final FilePath targetTestJavadoc; + + public MavenJavadocAction(AbstractItem project, boolean testJavadoc,FilePath target, FilePath targetTestJavadoc) { + super(project); + this.abstractItem = project; + this.testJavadoc = testJavadoc; + this.target = target; + this.targetTestJavadoc = targetTestJavadoc; + } + + + protected String getTitle() { + return abstractItem.getDisplayName()+ (!testJavadoc ? " javadoc": "test javadoc"); + } + + public String getUrlName() { + return !testJavadoc ? " javadoc": "test javadoc"; + } + + protected File dir() { + if (testJavadoc) { + return targetTestJavadoc == null ? null : new File(target.getRemote()); + } + return target == null ? null : new File(target.getRemote()); + } + } @Extension diff --git a/maven-plugin/src/main/resources/hudson/maven/reporters/Messages.properties b/maven-plugin/src/main/resources/hudson/maven/reporters/Messages.properties index 34aacf28d3..f8e135431e 100644 --- a/maven-plugin/src/main/resources/hudson/maven/reporters/Messages.properties +++ b/maven-plugin/src/main/resources/hudson/maven/reporters/Messages.properties @@ -31,6 +31,7 @@ MavenArtifactArchiver.FailedToInstallToMaster=Failed to install artifact to the MavenFingerprinter.DisplayName=Record fingerprints MavenJavadocArchiver.DisplayName=Publish javadoc +MavenTestJavadocArchiver.DisplayName=Publish Test javadoc MavenJavadocArchiver.FailedToCopy=Unable to copy Javadoc from {0} to {1} MavenJavadocArchiver.NoDestDir=Unable to obtain the destDir from javadoc mojo -- GitLab