[ 
https://issues.apache.org/jira/browse/MPLUGIN-511?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17825646#comment-17825646
 ] 

ASF GitHub Bot commented on MPLUGIN-511:
----------------------------------------

michael-o commented on code in PR #269:
URL: 
https://github.com/apache/maven-plugin-tools/pull/269#discussion_r1521308296


##########
maven-plugin-report-plugin/src/main/java/org/apache/maven/plugin/plugin/report/PluginReport.java:
##########
@@ -93,6 +110,9 @@ public class PluginReport extends AbstractMavenReport {
     @Parameter
     private List<RequirementsHistory> requirementsHistories = new 
ArrayList<>();
 
+    @Parameter(defaultValue = "[0,)")
+    private String detectRequirementsHistory;

Review Comment:
   The naming includes to be boolean, but is string. Weird.



##########
maven-plugin-report-plugin/src/main/java/org/apache/maven/plugin/plugin/report/RequirementsHistory.java:
##########
@@ -118,33 +126,32 @@ public static String discoverJdkRequirement(MavenProject 
project, PluginDescript
         }
 
         jdk = getPluginParameter(compiler, "release");
-        if (jdk != null) {
-            return jdk;
+        if (jdk == null) {
+            jdk = 
project.getProperties().getProperty("maven.compiler.release");
         }
 
-        jdk = project.getProperties().getProperty("maven.compiler.release");
-        if (jdk != null) {
-            return jdk;
+        if (jdk == null) {
+            jdk = getPluginParameter(compiler, "target");
         }
 
-        jdk = getPluginParameter(compiler, "target");
-        if (jdk != null) {
-            return jdk;
+        if (jdk == null) {
+            // default value
+            jdk = project.getProperties().getProperty("maven.compiler.target");
         }
 
-        // default value
-        jdk = project.getProperties().getProperty("maven.compiler.target");
-        if (jdk != null) {
-            return jdk;
-        }
+        if (jdk == null) {
+            String version = (compiler == null) ? null : compiler.getVersion();
 
-        String version = (compiler == null) ? null : compiler.getVersion();
-
-        if (version != null) {
-            return "Default target for maven-compiler-plugin version " + 
version;
+            if (version != null) {
+                return "Default target for maven-compiler-plugin version " + 
version;
+            }
+        } else {
+            if (Arrays.asList("1.5", "1.6", "1.7", "1.8").contains(jdk)) {

Review Comment:
   One should not be able to write 1.9, 1.10, etc.



##########
maven-plugin-report-plugin/src/main/java/org/apache/maven/plugin/plugin/report/PluginReport.java:
##########
@@ -150,6 +179,29 @@ protected void executeReport(Locale locale) throws 
MavenReportException {
         // Generate the mojos' documentation
         generateMojosDocumentation(pluginDescriptor, locale);
 
+        if (requirementsHistories.isEmpty()) {
+            // detect requirements history
+            String v = null;
+            try {
+                List<Version> versions = 
discoverVersions(detectRequirementsHistory);
+                getLog().info("Detecting requirements history for " + 
detectRequirementsHistory + ": "
+                        + versions.size());
+
+                Collections.reverse(versions);
+                for (Version version : versions) {
+                    v = version.toString();
+                    MavenProject versionProject = buildMavenProject(v);
+                    RequirementsHistory requirements = 
RequirementsHistory.discoverRequirements(versionProject);
+                    requirementsHistories.add(requirements);
+                    getLog().info("- " + requirements);

Review Comment:
   This should be indented



##########
maven-plugin-report-plugin/src/main/java/org/apache/maven/plugin/plugin/report/RequirementsHistory.java:
##########
@@ -72,16 +73,23 @@ public String toString() {
         return sb.toString();
     }
 
+    public static RequirementsHistory discoverRequirements(MavenProject 
project) {
+        RequirementsHistory req = new RequirementsHistory();
+        req.version = project.getVersion();
+        req.jdk = discoverJdkRequirement(project, null);
+        req.maven = discoverMavenRequirement(project, null);
+        return req;
+    }
     /**
      * Tries to determine the Maven requirement from either the plugin 
descriptor or (if not set) from the
      * Maven prerequisites element in the POM.
      *
      * @param project      not null
-     * @param pluginDescriptor the plugin descriptor (not null)
+     * @param pluginDescriptor the plugin descriptor (can be null)
      * @return the Maven version or null if not specified
      */
     public static String discoverMavenRequirement(MavenProject project, 
PluginDescriptor pluginDescriptor) {
-        if 
(StringUtils.isNotBlank(pluginDescriptor.getRequiredMavenVersion())) {
+        if (pluginDescriptor != null && 
StringUtils.isNotBlank(pluginDescriptor.getRequiredMavenVersion())) {

Review Comment:
   How can it be suddenly `null`?





> create and share tooling to detect plugin prerequisites history
> ---------------------------------------------------------------
>
>                 Key: MPLUGIN-511
>                 URL: https://issues.apache.org/jira/browse/MPLUGIN-511
>             Project: Maven Plugin Tools
>          Issue Type: Improvement
>          Components: Plugin Plugin
>    Affects Versions: 3.11.0
>            Reporter: Herve Boutemy
>            Priority: Major
>             Fix For: 3.12.0
>
>
> to help creating documentation needed on plugins when implementing 
> MPLUGIN-400, i.e. fill requirementsHistories 
> [https://maven.apache.org/plugin-tools-archives/plugin-tools-3.7.0/maven-plugin-report-plugin/report-mojo.html#requirementshistories]
>  
> this will be useful both for Maven project itself, because we have 52 plugins 
> to work on 
> [https://ci-maven.apache.org/job/Maven/job/maven-box/job/maven-dist-tool/job/master/site/dist-tool-prerequisites.html]
> but this will help also every plugin maintainers: MojoHaus, others



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to