From 3977d6b7a67f0f3b00e650312b6d6319d77c0f35 Mon Sep 17 00:00:00 2001 From: Christof Reichardt Date: Tue, 7 Jun 2022 19:26:51 +0200 Subject: [PATCH 1/5] Replayed relevant changes from scaladoc3. --- pom.xml | 4 +- src/it/test_scaladoc3/invoker.properties | 1 + src/it/test_scaladoc3/pom.xml | 113 +++++++++++++ .../scala/diagnosis/Tracing.scala | 58 +++++++ .../scala/diagnosis/package.scala | 26 +++ .../scala/math/Polynomial.scala | 59 +++++++ src/it/test_scaladoc3/validate.groovy | 11 ++ src/main/java/scala_maven/ScalaDocMojo.java | 24 ++- .../java/scala_maven/ScalaMojoSupport.java | 9 +- .../scala_maven_dependency/ArtifactIds.java | 2 + .../ArtifactIds4Scala2.java | 5 + .../ArtifactIds4Scala3.java | 8 +- .../java/scala_maven_dependency/Context.java | 2 + .../Context4ScalaHome.java | 6 + .../Context4ScalaRemote.java | 13 ++ .../ScalaDoc3Caller.java | 150 ++++++++++++++++++ 16 files changed, 483 insertions(+), 8 deletions(-) create mode 100644 src/it/test_scaladoc3/invoker.properties create mode 100644 src/it/test_scaladoc3/pom.xml create mode 100644 src/it/test_scaladoc3/src/main/scala/de/christofreichardt/scala/diagnosis/Tracing.scala create mode 100644 src/it/test_scaladoc3/src/main/scala/de/christofreichardt/scala/diagnosis/package.scala create mode 100644 src/it/test_scaladoc3/src/main/scala/de/christofreichardt/scala/math/Polynomial.scala create mode 100644 src/it/test_scaladoc3/validate.groovy create mode 100644 src/main/java/scala_maven_executions/ScalaDoc3Caller.java diff --git a/pom.xml b/pom.xml index 4b5702f8..cca2c75a 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 net.alchim31.maven scala-maven-plugin - 4.6.3-SNAPSHOT + 4.6.3-EXPERIMENTAL maven-plugin scala-maven-plugin @@ -399,7 +399,7 @@ false -missing - http://java.sun.com/j2se/${maven.compiler.source}/docs/api/ + https://docs.oracle.com/javase/8/docs/api/ http://slf4j.org/api/ http://commons.apache.org/lang/api-release/ http://commons.apache.org/io/api-release/ diff --git a/src/it/test_scaladoc3/invoker.properties b/src/it/test_scaladoc3/invoker.properties new file mode 100644 index 00000000..fff78eee --- /dev/null +++ b/src/it/test_scaladoc3/invoker.properties @@ -0,0 +1 @@ +invoker.goals=clean package diff --git a/src/it/test_scaladoc3/pom.xml b/src/it/test_scaladoc3/pom.xml new file mode 100644 index 00000000..cfede858 --- /dev/null +++ b/src/it/test_scaladoc3/pom.xml @@ -0,0 +1,113 @@ + + 4.0.0 + + it.scala-maven-plugin + scaladoc-jar-test + 1.0-SNAPSHOT + ${project.artifactId} + + + 11 + 11 + UTF-8 + 4.6.3-EXPERIMENTAL + false + + + + src/main/scala + + + org.apache.maven.plugins + maven-source-plugin + 3.2.1 + + + attach-sources + + jar-no-fork + + + + + + + + + + de.christofreichardt + tracelogger + 1.9.0 + + + + + + scala3 + + true + + + + + @project.groupId@ + @project.artifactId@ + @project.version@ + + + Scalac + + compile + testCompile + add-source + + + + -deprecation + -release:11 + -encoding + utf-8 + + + + + Scaladoc-jar + + doc-jar + + package + + true + + -Xms64m + -Xmx1024m + + + -doc-footer + Scala Maven Plugin - Scaladoc for Scala 3 + -doc-title + scaladoc-jar-test + -doc-version + ${project.version} + -author + + + + + + + + + + org.scala-lang + scala3-library_3 + 3.1.2 + + + + + + diff --git a/src/it/test_scaladoc3/src/main/scala/de/christofreichardt/scala/diagnosis/Tracing.scala b/src/it/test_scaladoc3/src/main/scala/de/christofreichardt/scala/diagnosis/Tracing.scala new file mode 100644 index 00000000..0955aee0 --- /dev/null +++ b/src/it/test_scaladoc3/src/main/scala/de/christofreichardt/scala/diagnosis/Tracing.scala @@ -0,0 +1,58 @@ +/* + * Shamirs Keystore + * + * Copyright (C) 2017, 2021, Christof Reichardt + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package de.christofreichardt.scala.diagnosis + +import de.christofreichardt.diagnosis.TracerFactory +import de.christofreichardt.diagnosis.AbstractTracer + +/** + * Contains some add-ons for the TraceLogger library. + * + * @author Christof Reichardt + */ +trait Tracing { + /** + * Custom control structure for tracing of embraced code blocks. + * + * @param resultType denotes the return type + * @param callee the call site + * @param method denotes the method signature + * @param block the embraced code block + * @tparam T the actual type of the embraced code block + * @return returns whatever block returns + */ + def withTracer[T](resultType: String, callee: AnyRef, method: String)(block: => T): T = { + val tracer = getCurrentTracer() + tracer.entry(resultType, callee, method) + try { + block + } + finally { + tracer.wayout() + } + } + + /** + * Returns the present tracer for this object. + * + * @return the current tracer, by default the NullTracer + */ + def getCurrentTracer(): AbstractTracer = TracerFactory.getInstance().getDefaultTracer() +} \ No newline at end of file diff --git a/src/it/test_scaladoc3/src/main/scala/de/christofreichardt/scala/diagnosis/package.scala b/src/it/test_scaladoc3/src/main/scala/de/christofreichardt/scala/diagnosis/package.scala new file mode 100644 index 00000000..a49d6705 --- /dev/null +++ b/src/it/test_scaladoc3/src/main/scala/de/christofreichardt/scala/diagnosis/package.scala @@ -0,0 +1,26 @@ +/* + * Shamirs Keystore + * + * Copyright (C) 2017, 2021, Christof Reichardt + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package de.christofreichardt.scala + +/** + * Contains an utility useful for debugging and diagnosis. + */ +package object diagnosis { +} diff --git a/src/it/test_scaladoc3/src/main/scala/de/christofreichardt/scala/math/Polynomial.scala b/src/it/test_scaladoc3/src/main/scala/de/christofreichardt/scala/math/Polynomial.scala new file mode 100644 index 00000000..ca7ce3e8 --- /dev/null +++ b/src/it/test_scaladoc3/src/main/scala/de/christofreichardt/scala/math/Polynomial.scala @@ -0,0 +1,59 @@ +package de.christofreichardt.scala.math + +import de.christofreichardt.diagnosis.{AbstractTracer, TracerFactory} +import de.christofreichardt.scala.diagnosis.Tracing + +/** + * Defines a polynomial in its canonical form. + * + * @author Christof Reichardt + * + * @constructor + * @param coefficients the polynoms coefficients + * @param prime the prime modulus + */ +class Polynomial( + val coefficients: IndexedSeq[BigInt], + val prime: BigInt) + extends Tracing { + + require(prime.isProbablePrime(100)) + + /** the remaining coefficients while dropping leading zeros */ + val a: Seq[BigInt] = coefficients.dropWhile(c => c == BigInt(0)) + /** the degree of the polynomial */ + val degree: Int = a.length - 1 + /** indicates the zero polynomial */ + val isZero: Boolean = degree == -1 + + /** + * Computes y = P(x). + * + * @param x the x value + * @return the y value + */ + def evaluateAt(x: BigInt): BigInt = { + withTracer("BigInt", this, "evaluateAt(x: BigInt)") { + val tracer = getCurrentTracer() + tracer.out().printfIndentln("x = %s", x) + if (isZero) BigInt(0) + else { + Range.inclusive(0, degree) + .map(i => { + tracer.out().printfIndentln("a(%d) = %s", degree - i: Integer, a(i)) + (a(i) * x.modPow(degree - i, prime)).mod(prime) + }) + .foldLeft(BigInt(0))((t0, t1) => (t0 + t1).mod(prime)) + } + } + } + + /** + * Returns a string representation of the Polynomial. + * + * @return the string representation of the Polynomial + */ + override def toString = String.format("Polynomial[a=(%s), degree=%d, isZero=%b, prime=%s]", a.mkString(","), degree: Integer, isZero: java.lang.Boolean, prime) + + override def getCurrentTracer(): AbstractTracer = TracerFactory.getInstance().getDefaultTracer +} \ No newline at end of file diff --git a/src/it/test_scaladoc3/validate.groovy b/src/it/test_scaladoc3/validate.groovy new file mode 100644 index 00000000..b7802ab2 --- /dev/null +++ b/src/it/test_scaladoc3/validate.groovy @@ -0,0 +1,11 @@ +try { + +def file = new File(basedir, 'target/scaladoc-jar-test-1.0-SNAPSHOT-javadoc.jar') +assert file.exists() + +return true + +} catch(Throwable e) { + e.printStackTrace() + return false +} \ No newline at end of file diff --git a/src/main/java/scala_maven/ScalaDocMojo.java b/src/main/java/scala_maven/ScalaDocMojo.java index e27ef2ac..930b9331 100644 --- a/src/main/java/scala_maven/ScalaDocMojo.java +++ b/src/main/java/scala_maven/ScalaDocMojo.java @@ -17,6 +17,7 @@ import org.codehaus.plexus.util.StringUtils; import scala_maven_dependency.Context; import scala_maven_executions.JavaMainCaller; +import scala_maven_executions.ScalaDoc3Caller; import util.FileUtils; /** Produces Scala API documentation. */ @@ -153,7 +154,14 @@ protected JavaMainCaller getScalaCommand() throws Exception { // This ensures we have a valid scala version... checkScalaVersion(); Context sc = findScalaContext(); - JavaMainCaller jcmd = getEmptyScalaCommand(sc.apidocMainClassName(scaladocClassName)); + String apidocMainClassName = sc.apidocMainClassName(scaladocClassName); + JavaMainCaller jcmd; + if (sc.version().major < 3) { + jcmd = getEmptyScalaCommand(apidocMainClassName); + } else { + String targetClassesDir = project.getModel().getBuild().getOutputDirectory(); + jcmd = new ScalaDoc3Caller(this, apidocMainClassName, targetClassesDir); + } jcmd.addArgs(args); jcmd.addJvmArgs(jvmArgs); addCompilerPluginOptions(jcmd); @@ -171,7 +179,13 @@ protected JavaMainCaller getScalaCommand() throws Exception { .getOutputDirectory())); // remove output to avoid "error for" : error: XXX is // already defined as package XXX ... object XXX { addAdditionalDependencies(paths); - if (!paths.isEmpty()) jcmd.addOption("-classpath", FileUtils.toMultiPath(paths)); + if (sc.version().major == 3) { + addScalaDocToClasspath(paths); + } + + if (!paths.isEmpty()) { + jcmd.addOption("-classpath", FileUtils.toMultiPath(paths)); + } // jcmd.addOption("-sourcepath", sourceDir.getAbsolutePath()); jcmd.addArgs("-doc-format:html"); @@ -196,8 +210,10 @@ public void generate(Sink sink, Locale locale) throws MavenReportException { if (sources.size() > 0) { JavaMainCaller jcmd = getScalaCommand(); jcmd.addOption("-d", reportOutputDir.getAbsolutePath()); - for (File x : sources) { - jcmd.addArgs(FileUtils.pathOf(x, useCanonicalPath)); + if (this.scalaContext.version().major < 3) { + for (File x : sources) { + jcmd.addArgs(FileUtils.pathOf(x, useCanonicalPath)); + } } jcmd.run(displayCmd); } diff --git a/src/main/java/scala_maven/ScalaMojoSupport.java b/src/main/java/scala_maven/ScalaMojoSupport.java index 54983ee8..68fb27c3 100644 --- a/src/main/java/scala_maven/ScalaMojoSupport.java +++ b/src/main/java/scala_maven/ScalaMojoSupport.java @@ -219,7 +219,7 @@ public MavenArtifactResolver findMavenArtifactResolver() { return mavenArtifactResolver; } - private Context scalaContext; + protected Context scalaContext; public Context findScalaContext() throws Exception { // reuse/lazy scalaContext creation (doesn't need to be Thread safe, scalaContext should be @@ -290,6 +290,13 @@ void addLibraryToClasspath(Set classpath) throws Exception { } } + void addScalaDocToClasspath(Set classpath) throws Exception { + Context sc = findScalaContext(); + for (Artifact dep : sc.findScalaDocAndDependencies()) { + classpath.add(dep.getFile()); + } + } + @Override public void execute() throws MojoExecutionException, MojoFailureException { try { diff --git a/src/main/java/scala_maven_dependency/ArtifactIds.java b/src/main/java/scala_maven_dependency/ArtifactIds.java index ccc8943b..51189a59 100644 --- a/src/main/java/scala_maven_dependency/ArtifactIds.java +++ b/src/main/java/scala_maven_dependency/ArtifactIds.java @@ -16,6 +16,8 @@ public interface ArtifactIds { String scalaCompilerArtifactId() throws Exception; + String scalaDocArtifactId() throws Exception; + String compilerMainClassName(boolean useFsc) throws Exception; String consoleMainClassName() throws Exception; diff --git a/src/main/java/scala_maven_dependency/ArtifactIds4Scala2.java b/src/main/java/scala_maven_dependency/ArtifactIds4Scala2.java index a3feaa77..3b645fd6 100644 --- a/src/main/java/scala_maven_dependency/ArtifactIds4Scala2.java +++ b/src/main/java/scala_maven_dependency/ArtifactIds4Scala2.java @@ -34,6 +34,11 @@ public String scalaCompilerArtifactId() throws Exception { return SCALA_COMPILER_ARTIFACTID; } + @Override + public String scalaDocArtifactId() throws Exception { + return null; + } + public String compilerMainClassName(boolean useFsc) throws Exception { return useFsc ? "scala.tools.nsc.CompileClient" : "scala.tools.nsc.Main"; } diff --git a/src/main/java/scala_maven_dependency/ArtifactIds4Scala3.java b/src/main/java/scala_maven_dependency/ArtifactIds4Scala3.java index 0363f805..5aa6e2f3 100644 --- a/src/main/java/scala_maven_dependency/ArtifactIds4Scala3.java +++ b/src/main/java/scala_maven_dependency/ArtifactIds4Scala3.java @@ -11,6 +11,7 @@ public class ArtifactIds4Scala3 implements ArtifactIds { protected static final String SCALA_LIBRARY_ARTIFACTID = "scala3-library"; protected static final String SCALA_COMPILER_ARTIFACTID = "scala3-compiler"; + protected static final String SCALA_DOC_ARTIFACTID = "scaladoc"; static final List SCALA_DISTRO_ARTIFACTS = Arrays.asList( SCALA_LIBRARY_ARTIFACTID, "scala3-swing", "scala3-dbc", SCALA_COMPILER_ARTIFACTID); @@ -49,6 +50,11 @@ public String scalaCompilerArtifactId() throws Exception { return getScala3ArtifactId(SCALA_COMPILER_ARTIFACTID); } + @Override + public String scalaDocArtifactId() throws Exception { + return getScala3ArtifactId(SCALA_DOC_ARTIFACTID); + } + public String compilerMainClassName(boolean useFsc) throws Exception { return "dotty.tools.dotc.Main"; } @@ -59,6 +65,6 @@ public String consoleMainClassName() throws Exception { } public String apidocMainClassName() throws Exception { - return "dotty.tools.dotc.Main"; + return "dotty.tools.scaladoc.Main"; } } diff --git a/src/main/java/scala_maven_dependency/Context.java b/src/main/java/scala_maven_dependency/Context.java index c1f1a5b3..8cf22a1b 100644 --- a/src/main/java/scala_maven_dependency/Context.java +++ b/src/main/java/scala_maven_dependency/Context.java @@ -19,6 +19,8 @@ public interface Context { Set findCompilerAndDependencies() throws Exception; + Set findScalaDocAndDependencies() throws Exception; + String compilerMainClassName(String override, boolean useFsc) throws Exception; String consoleMainClassName(String override) throws Exception; diff --git a/src/main/java/scala_maven_dependency/Context4ScalaHome.java b/src/main/java/scala_maven_dependency/Context4ScalaHome.java index d91da9f6..ea4a2e16 100644 --- a/src/main/java/scala_maven_dependency/Context4ScalaHome.java +++ b/src/main/java/scala_maven_dependency/Context4ScalaHome.java @@ -6,6 +6,7 @@ import java.io.File; import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.Set; import java.util.TreeSet; @@ -61,6 +62,11 @@ public Set findCompilerAndDependencies() throws Exception { } return d; } + + @Override + public Set findScalaDocAndDependencies() throws Exception { + return Collections.emptySet(); + } } class LocalFileArtifact implements Artifact { diff --git a/src/main/java/scala_maven_dependency/Context4ScalaRemote.java b/src/main/java/scala_maven_dependency/Context4ScalaRemote.java index ea01d525..ae5eb7a8 100644 --- a/src/main/java/scala_maven_dependency/Context4ScalaRemote.java +++ b/src/main/java/scala_maven_dependency/Context4ScalaRemote.java @@ -4,6 +4,7 @@ */ package scala_maven_dependency; +import java.util.Collections; import java.util.Set; import org.apache.maven.artifact.Artifact; import scala_maven.MavenArtifactResolver; @@ -41,4 +42,16 @@ public Set findCompilerAndDependencies() throws Exception { return mavenArtifactResolver.getJarAndDependencies( scalaOrganization, aids.scalaCompilerArtifactId(), scalaVersion.toString(), null); } + + @Override + public Set findScalaDocAndDependencies() throws Exception { + Set scaladocAndDependencies = Collections.emptySet(); + if (aids.scalaDocArtifactId() != null) { + scaladocAndDependencies = + mavenArtifactResolver.getJarAndDependencies( + scalaOrganization, aids.scalaDocArtifactId(), scalaVersion.toString(), null); + } + + return scaladocAndDependencies; + } } diff --git a/src/main/java/scala_maven_executions/ScalaDoc3Caller.java b/src/main/java/scala_maven_executions/ScalaDoc3Caller.java new file mode 100644 index 00000000..fbd88860 --- /dev/null +++ b/src/main/java/scala_maven_executions/ScalaDoc3Caller.java @@ -0,0 +1,150 @@ +/* + * This is free and unencumbered software released into the public domain. + * See UNLICENSE. + */ +package scala_maven_executions; + +import java.io.File; +import java.io.IOException; +import java.nio.file.FileSystems; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; +import org.apache.maven.plugin.AbstractMojo; +import org.apache.maven.plugin.MojoFailureException; + +/** + * @author Chr. Reichardt + */ +public class ScalaDoc3Caller implements JavaMainCaller { + + String classPath; + final List jvmArgs = new ArrayList<>(); + final String apidocMainClassName; + final AbstractMojo requester; + String outputPath = + FileSystems.getDefault() + .getPath(".", "target", "site", "scaladocs") + .toAbsolutePath() + .toString(); + final List args = new ArrayList<>(); + final String targetClassesDir; + + public ScalaDoc3Caller(AbstractMojo mojo, String apidocMainClassName, String targetClassesDir) { + this.requester = mojo; + this.apidocMainClassName = apidocMainClassName; + this.targetClassesDir = targetClassesDir; + } + + @Override + public void addJvmArgs(String... jvmArgs) { + if (Objects.nonNull(jvmArgs)) { + this.jvmArgs.addAll(Arrays.asList(jvmArgs)); + } + } + + @Override + public void addArgs(String... args) { + Map compatMap = new HashMap<>(); + compatMap.put("-doc-footer", "-project-footer"); + compatMap.put("-doc-title", "-project"); + compatMap.put("-doc-version", "-project-version"); + compatMap.put("-doc-source-url", "-source-links"); + + if (Objects.nonNull(args)) { + if (Objects.equals(args[0], "-doc-format:html")) { + return; + } + List migratedArgs = + Arrays.stream(args) + .map(arg -> compatMap.containsKey(arg) ? compatMap.get(arg) : arg) + .collect(Collectors.toList()); + this.args.addAll(migratedArgs); + } + } + + @Override + public void addOption(String key, String value) { + if (key.equals("-classpath")) { + this.classPath = value; + } else if (key.equals("-d")) { + this.outputPath = value; + } + } + + @Override + public void addOption(String key, File value) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void addOption(String key, boolean value) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void redirectToLog() { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void run(boolean displayCmd) throws Exception { + run(displayCmd, true); + } + + @Override + public boolean run(boolean displayCmd, boolean throwFailure) throws MojoFailureException { + List commands = new ArrayList<>(); + commands.add("java"); + commands.addAll(this.jvmArgs); + commands.add("-classpath"); + commands.add(this.classPath); + commands.add("-Dscala.usejavacp=true"); + commands.add(this.apidocMainClassName); + commands.addAll(this.args); + commands.add("-d"); + commands.add(this.outputPath); + commands.add(this.targetClassesDir); + + if (displayCmd) { + String cmd = commands.stream().collect(Collectors.joining(" ")); + this.requester.getLog().info(String.format("cmd: %s", cmd)); + } + + ProcessBuilder processBuilder = new ProcessBuilder(commands); + Path userDir = FileSystems.getDefault().getPath("."); + File workingDir = userDir.toFile(); + Process process; + try { + process = + processBuilder + .directory(workingDir) + .redirectOutput(ProcessBuilder.Redirect.INHERIT) + .redirectError(ProcessBuilder.Redirect.INHERIT) + .start(); + } catch (IOException ex) { + throw new MojoFailureException(ex.getMessage(), ex); + } + try { + int exitValue = process.waitFor(); + if (exitValue != 0) { + throw new MojoFailureException( + String.format("scaladoc_3 returned non-zero value: %d", exitValue)); + } + } catch (InterruptedException ex) { + throw new MojoFailureException(ex.getMessage(), ex); + } + + return true; + } + + @Override + public SpawnMonitor spawn(boolean displayCmd) throws Exception { + throw new UnsupportedOperationException("Not supported yet."); + } +} From fe64f7b38a47058ed9206bc6715bed13326ffa4a Mon Sep 17 00:00:00 2001 From: Christof Reichardt Date: Mon, 20 Jun 2022 15:50:49 +0200 Subject: [PATCH 2/5] Reverted to 4.6.3-SNAPSHOT. --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index cca2c75a..40a50a5c 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 net.alchim31.maven scala-maven-plugin - 4.6.3-EXPERIMENTAL + 4.6.3-SNAPSHOT maven-plugin scala-maven-plugin From a2289dbb494b50b26636129532e3b9799574632d Mon Sep 17 00:00:00 2001 From: Christof Reichardt Date: Mon, 20 Jun 2022 16:41:57 +0200 Subject: [PATCH 3/5] Revised sample project for integration test. --- .../scala/diagnosis/package.scala | 26 ------------------- .../scala => xyz}/diagnosis/Tracing.scala | 21 +++------------ .../main/scala/xyz/diagnosis/package.scala | 11 ++++++++ .../scala => xyz}/math/Polynomial.scala | 8 ++++-- src/it/test_scaladoc3/validate.groovy | 2 +- 5 files changed, 21 insertions(+), 47 deletions(-) delete mode 100644 src/it/test_scaladoc3/src/main/scala/de/christofreichardt/scala/diagnosis/package.scala rename src/it/test_scaladoc3/src/main/scala/{de/christofreichardt/scala => xyz}/diagnosis/Tracing.scala (58%) create mode 100644 src/it/test_scaladoc3/src/main/scala/xyz/diagnosis/package.scala rename src/it/test_scaladoc3/src/main/scala/{de/christofreichardt/scala => xyz}/math/Polynomial.scala (89%) diff --git a/src/it/test_scaladoc3/src/main/scala/de/christofreichardt/scala/diagnosis/package.scala b/src/it/test_scaladoc3/src/main/scala/de/christofreichardt/scala/diagnosis/package.scala deleted file mode 100644 index a49d6705..00000000 --- a/src/it/test_scaladoc3/src/main/scala/de/christofreichardt/scala/diagnosis/package.scala +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Shamirs Keystore - * - * Copyright (C) 2017, 2021, Christof Reichardt - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package de.christofreichardt.scala - -/** - * Contains an utility useful for debugging and diagnosis. - */ -package object diagnosis { -} diff --git a/src/it/test_scaladoc3/src/main/scala/de/christofreichardt/scala/diagnosis/Tracing.scala b/src/it/test_scaladoc3/src/main/scala/xyz/diagnosis/Tracing.scala similarity index 58% rename from src/it/test_scaladoc3/src/main/scala/de/christofreichardt/scala/diagnosis/Tracing.scala rename to src/it/test_scaladoc3/src/main/scala/xyz/diagnosis/Tracing.scala index 0955aee0..0a2045d6 100644 --- a/src/it/test_scaladoc3/src/main/scala/de/christofreichardt/scala/diagnosis/Tracing.scala +++ b/src/it/test_scaladoc3/src/main/scala/xyz/diagnosis/Tracing.scala @@ -1,23 +1,8 @@ /* - * Shamirs Keystore - * - * Copyright (C) 2017, 2021, Christof Reichardt - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . + * This is free and unencumbered software released into the public domain. + * See UNLICENSE. */ - -package de.christofreichardt.scala.diagnosis +package xyz.diagnosis import de.christofreichardt.diagnosis.TracerFactory import de.christofreichardt.diagnosis.AbstractTracer diff --git a/src/it/test_scaladoc3/src/main/scala/xyz/diagnosis/package.scala b/src/it/test_scaladoc3/src/main/scala/xyz/diagnosis/package.scala new file mode 100644 index 00000000..1d880100 --- /dev/null +++ b/src/it/test_scaladoc3/src/main/scala/xyz/diagnosis/package.scala @@ -0,0 +1,11 @@ +/* + * This is free and unencumbered software released into the public domain. + * See UNLICENSE. + */ +package xyz + +/** + * Contains an utility useful for debugging and diagnosis. + */ +package object diagnosis { +} diff --git a/src/it/test_scaladoc3/src/main/scala/de/christofreichardt/scala/math/Polynomial.scala b/src/it/test_scaladoc3/src/main/scala/xyz/math/Polynomial.scala similarity index 89% rename from src/it/test_scaladoc3/src/main/scala/de/christofreichardt/scala/math/Polynomial.scala rename to src/it/test_scaladoc3/src/main/scala/xyz/math/Polynomial.scala index ca7ce3e8..2528b14d 100644 --- a/src/it/test_scaladoc3/src/main/scala/de/christofreichardt/scala/math/Polynomial.scala +++ b/src/it/test_scaladoc3/src/main/scala/xyz/math/Polynomial.scala @@ -1,7 +1,11 @@ -package de.christofreichardt.scala.math +/* + * This is free and unencumbered software released into the public domain. + * See UNLICENSE. + */ +package xyz.math import de.christofreichardt.diagnosis.{AbstractTracer, TracerFactory} -import de.christofreichardt.scala.diagnosis.Tracing +import xyz.diagnosis.Tracing /** * Defines a polynomial in its canonical form. diff --git a/src/it/test_scaladoc3/validate.groovy b/src/it/test_scaladoc3/validate.groovy index b7802ab2..55664baf 100644 --- a/src/it/test_scaladoc3/validate.groovy +++ b/src/it/test_scaladoc3/validate.groovy @@ -8,4 +8,4 @@ return true } catch(Throwable e) { e.printStackTrace() return false -} \ No newline at end of file +} From 589f8b4aa137b8faf9a6b972a5e2d014db3e0883 Mon Sep 17 00:00:00 2001 From: Christof Reichardt Date: Mon, 20 Jun 2022 17:33:59 +0200 Subject: [PATCH 4/5] Moved method 'addScalaDocToClasspath' and discarded needless test for version. --- src/main/java/scala_maven/ScalaDocMojo.java | 12 +++++++++--- src/main/java/scala_maven/ScalaMojoSupport.java | 7 ------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/main/java/scala_maven/ScalaDocMojo.java b/src/main/java/scala_maven/ScalaDocMojo.java index 930b9331..22ba0967 100644 --- a/src/main/java/scala_maven/ScalaDocMojo.java +++ b/src/main/java/scala_maven/ScalaDocMojo.java @@ -6,6 +6,7 @@ import java.io.File; import java.util.*; +import org.apache.maven.artifact.Artifact; import org.apache.maven.plugins.annotations.Execute; import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.Mojo; @@ -150,6 +151,13 @@ public void doExecute() throws Exception { generate(null, Locale.getDefault()); } + void addScalaDocToClasspath(Set classpath) throws Exception { + Context sc = findScalaContext(); + for (Artifact dep : sc.findScalaDocAndDependencies()) { + classpath.add(dep.getFile()); + } + } + protected JavaMainCaller getScalaCommand() throws Exception { // This ensures we have a valid scala version... checkScalaVersion(); @@ -179,9 +187,7 @@ protected JavaMainCaller getScalaCommand() throws Exception { .getOutputDirectory())); // remove output to avoid "error for" : error: XXX is // already defined as package XXX ... object XXX { addAdditionalDependencies(paths); - if (sc.version().major == 3) { - addScalaDocToClasspath(paths); - } + addScalaDocToClasspath(paths); if (!paths.isEmpty()) { jcmd.addOption("-classpath", FileUtils.toMultiPath(paths)); diff --git a/src/main/java/scala_maven/ScalaMojoSupport.java b/src/main/java/scala_maven/ScalaMojoSupport.java index 68fb27c3..9f6ac1be 100644 --- a/src/main/java/scala_maven/ScalaMojoSupport.java +++ b/src/main/java/scala_maven/ScalaMojoSupport.java @@ -290,13 +290,6 @@ void addLibraryToClasspath(Set classpath) throws Exception { } } - void addScalaDocToClasspath(Set classpath) throws Exception { - Context sc = findScalaContext(); - for (Artifact dep : sc.findScalaDocAndDependencies()) { - classpath.add(dep.getFile()); - } - } - @Override public void execute() throws MojoExecutionException, MojoFailureException { try { From 22d453d36e718fdf38bc76c0fd3045af00f1602b Mon Sep 17 00:00:00 2001 From: Christof Reichardt Date: Tue, 21 Jun 2022 15:03:01 +0200 Subject: [PATCH 5/5] Formatting. --- .../src/main/scala/xyz/math/Polynomial.scala | 2 +- src/it/test_scaladoc3/validate.groovy | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/it/test_scaladoc3/src/main/scala/xyz/math/Polynomial.scala b/src/it/test_scaladoc3/src/main/scala/xyz/math/Polynomial.scala index 2528b14d..0a58fd93 100644 --- a/src/it/test_scaladoc3/src/main/scala/xyz/math/Polynomial.scala +++ b/src/it/test_scaladoc3/src/main/scala/xyz/math/Polynomial.scala @@ -60,4 +60,4 @@ class Polynomial( override def toString = String.format("Polynomial[a=(%s), degree=%d, isZero=%b, prime=%s]", a.mkString(","), degree: Integer, isZero: java.lang.Boolean, prime) override def getCurrentTracer(): AbstractTracer = TracerFactory.getInstance().getDefaultTracer -} \ No newline at end of file +} diff --git a/src/it/test_scaladoc3/validate.groovy b/src/it/test_scaladoc3/validate.groovy index 55664baf..f3055832 100644 --- a/src/it/test_scaladoc3/validate.groovy +++ b/src/it/test_scaladoc3/validate.groovy @@ -1,9 +1,8 @@ try { + def file = new File(basedir, 'target/scaladoc-jar-test-1.0-SNAPSHOT-javadoc.jar') + assert file.exists() -def file = new File(basedir, 'target/scaladoc-jar-test-1.0-SNAPSHOT-javadoc.jar') -assert file.exists() - -return true + return true } catch(Throwable e) { e.printStackTrace()