NOAA-OWP / wres

Code and scripts for the Water Resources Evaluation Service
Other
2 stars 1 forks source link

As a programmer, I want strong modular boundaries (use Java modules introduced by project jigsaw) #208

Open epag opened 3 weeks ago

epag commented 3 weeks ago

Author Name: Jesse (Jesse) Original Redmine Issue: 62732, https://vlab.noaa.gov/redmine/issues/62732 Original Date: 2019-04-18


Given a build of WRES When try to use the various modules (jars) in another program or another module Then there should be clear and strong boundaries enforced by the system

Many people worked for a long time to afford this possibility with Java 9 in "Project Jigsaw":https://openjdk.java.net/projects/jigsaw/ so now that we are past Java 8 we can start to make use of these features.


Related issue(s): #102 Redmine related issue(s): 111518, 111532, 119337


epag commented 3 weeks ago

Original Redmine Comment Author Name: Jesse (Jesse) Original Date: 2022-04-28T22:46:13Z


This one from spring @ id "io.spring.javadoc-aggregate" version "0.0.1"@ gives an interesting verbose error:

[wres]$ ./gradlew aggregateJavadoc
> Task :aggregateJavadoc FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':aggregateJavadoc'.
> Could not resolve all files for configuration ':sourcesPath'.
   > Could not resolve org.slf4j:slf4j-api:2.0.0-alpha7.
     Required by:
         project :
      > No matching variant of org.slf4j:slf4j-api:2.0.0-alpha7 was found. The consumer was configured to find a runtime of sources, as well as attribute 'org.gradle.docselements' with value 'sources' but:
          - Variant 'compile' capability org.slf4j:slf4j-api:2.0.0-alpha7:
              - Incompatible because this component declares an API of a library and the consumer needed a runtime of documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'enforced-platform-compile' capability org.slf4j:slf4j-api-derived-enforced-platform:2.0.0-alpha7:
              - Incompatible because this component declares an API of an enforced platform and the consumer needed a runtime of documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'enforced-platform-runtime' capability org.slf4j:slf4j-api-derived-enforced-platform:2.0.0-alpha7 declares a runtime of a component:
              - Incompatible because this component declares an enforced platform and the consumer needed documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'platform-compile' capability org.slf4j:slf4j-api-derived-platform:2.0.0-alpha7:
              - Incompatible because this component declares an API of a platform and the consumer needed a runtime of documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'platform-runtime' capability org.slf4j:slf4j-api-derived-platform:2.0.0-alpha7 declares a runtime of a component:
              - Incompatible because this component declares a platform and the consumer needed documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'runtime' capability org.slf4j:slf4j-api:2.0.0-alpha7 declares a runtime of a component:
              - Incompatible because this component declares a library and the consumer needed documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
   > Could not resolve jakarta.ws.rs:jakarta.ws.rs-api:3.1.0.
     Required by:
         project :
      > No matching variant of jakarta.ws.rs:jakarta.ws.rs-api:3.1.0 was found. The consumer was configured to find a runtime of sources, as well as attribute 'org.gradle.docselements' with value 'sources' but:
          - Variant 'compile' capability jakarta.ws.rs:jakarta.ws.rs-api:3.1.0:
              - Incompatible because this component declares an API of a library and the consumer needed a runtime of documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'enforced-platform-compile' capability jakarta.ws.rs:jakarta.ws.rs-api-derived-enforced-platform:3.1.0:
              - Incompatible because this component declares an API of an enforced platform and the consumer needed a runtime of documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'enforced-platform-runtime' capability jakarta.ws.rs:jakarta.ws.rs-api-derived-enforced-platform:3.1.0 declares a runtime of a component:
              - Incompatible because this component declares an enforced platform and the consumer needed documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'platform-compile' capability jakarta.ws.rs:jakarta.ws.rs-api-derived-platform:3.1.0:
              - Incompatible because this component declares an API of a platform and the consumer needed a runtime of documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'platform-runtime' capability jakarta.ws.rs:jakarta.ws.rs-api-derived-platform:3.1.0 declares a runtime of a component:
              - Incompatible because this component declares a platform and the consumer needed documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'runtime' capability jakarta.ws.rs:jakarta.ws.rs-api:3.1.0 declares a runtime of a component:
              - Incompatible because this component declares a library and the consumer needed documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
   > Could not resolve jakarta.annotation:jakarta.annotation-api:2.1.0.
     Required by:
         project :
      > No matching variant of jakarta.annotation:jakarta.annotation-api:2.1.0 was found. The consumer was configured to find a runtime of sources, as well as attribute 'org.gradle.docselements' with value 'sources' but:
          - Variant 'compile' capability jakarta.annotation:jakarta.annotation-api:2.1.0:
              - Incompatible because this component declares an API of a library and the consumer needed a runtime of documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'enforced-platform-compile' capability jakarta.annotation:jakarta.annotation-api-derived-enforced-platform:2.1.0:
              - Incompatible because this component declares an API of an enforced platform and the consumer needed a runtime of documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'enforced-platform-runtime' capability jakarta.annotation:jakarta.annotation-api-derived-enforced-platform:2.1.0 declares a runtime of a component:
              - Incompatible because this component declares an enforced platform and the consumer needed documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'platform-compile' capability jakarta.annotation:jakarta.annotation-api-derived-platform:2.1.0:
              - Incompatible because this component declares an API of a platform and the consumer needed a runtime of documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'platform-runtime' capability jakarta.annotation:jakarta.annotation-api-derived-platform:2.1.0 declares a runtime of a component:
              - Incompatible because this component declares a platform and the consumer needed documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'runtime' capability jakarta.annotation:jakarta.annotation-api:2.1.0 declares a runtime of a component:
              - Incompatible because this component declares a library and the consumer needed documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
   > Could not resolve jakarta.xml.bind:jakarta.xml.bind-api:3.0.1.
     Required by:
         project :
      > No matching variant of jakarta.xml.bind:jakarta.xml.bind-api:3.0.1 was found. The consumer was configured to find a runtime of sources, as well as attribute 'org.gradle.docselements' with value 'sources' but:
          - Variant 'compile' capability jakarta.xml.bind:jakarta.xml.bind-api:3.0.1:
              - Incompatible because this component declares an API of a library and the consumer needed a runtime of documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'enforced-platform-compile' capability jakarta.xml.bind:jakarta.xml.bind-api-derived-enforced-platform:3.0.1:
              - Incompatible because this component declares an API of an enforced platform and the consumer needed a runtime of documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'enforced-platform-runtime' capability jakarta.xml.bind:jakarta.xml.bind-api-derived-enforced-platform:3.0.1 declares a runtime of a component:
              - Incompatible because this component declares an enforced platform and the consumer needed documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'platform-compile' capability jakarta.xml.bind:jakarta.xml.bind-api-derived-platform:3.0.1:
              - Incompatible because this component declares an API of a platform and the consumer needed a runtime of documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'platform-runtime' capability jakarta.xml.bind:jakarta.xml.bind-api-derived-platform:3.0.1 declares a runtime of a component:
              - Incompatible because this component declares a platform and the consumer needed documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'runtime' capability jakarta.xml.bind:jakarta.xml.bind-api:3.0.1 declares a runtime of a component:
              - Incompatible because this component declares a library and the consumer needed documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
   > Could not resolve org.eclipse.jetty:jetty-server:11.0.9.
     Required by:
         project :
      > No matching variant of org.eclipse.jetty:jetty-server:11.0.9 was found. The consumer was configured to find a runtime of sources, as well as attribute 'org.gradle.docselements' with value 'sources' but:
          - Variant 'compile' capability org.eclipse.jetty:jetty-server:11.0.9:
              - Incompatible because this component declares an API of a library and the consumer needed a runtime of documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'enforced-platform-compile' capability org.eclipse.jetty:jetty-server-derived-enforced-platform:11.0.9:
              - Incompatible because this component declares an API of an enforced platform and the consumer needed a runtime of documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'enforced-platform-runtime' capability org.eclipse.jetty:jetty-server-derived-enforced-platform:11.0.9 declares a runtime of a component:
              - Incompatible because this component declares an enforced platform and the consumer needed documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'platform-compile' capability org.eclipse.jetty:jetty-server-derived-platform:11.0.9:
              - Incompatible because this component declares an API of a platform and the consumer needed a runtime of documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'platform-runtime' capability org.eclipse.jetty:jetty-server-derived-platform:11.0.9 declares a runtime of a component:
              - Incompatible because this component declares a platform and the consumer needed documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'runtime' capability org.eclipse.jetty:jetty-server:11.0.9 declares a runtime of a component:
              - Incompatible because this component declares a library and the consumer needed documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
   > Could not resolve org.eclipse.jetty:jetty-webapp:11.0.9.
     Required by:
         project :
      > No matching variant of org.eclipse.jetty:jetty-webapp:11.0.9 was found. The consumer was configured to find a runtime of sources, as well as attribute 'org.gradle.docselements' with value 'sources' but:
          - Variant 'compile' capability org.eclipse.jetty:jetty-webapp:11.0.9:
              - Incompatible because this component declares an API of a library and the consumer needed a runtime of documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'enforced-platform-compile' capability org.eclipse.jetty:jetty-webapp-derived-enforced-platform:11.0.9:
              - Incompatible because this component declares an API of an enforced platform and the consumer needed a runtime of documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'enforced-platform-runtime' capability org.eclipse.jetty:jetty-webapp-derived-enforced-platform:11.0.9 declares a runtime of a component:
              - Incompatible because this component declares an enforced platform and the consumer needed documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'platform-compile' capability org.eclipse.jetty:jetty-webapp-derived-platform:11.0.9:
              - Incompatible because this component declares an API of a platform and the consumer needed a runtime of documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'platform-runtime' capability org.eclipse.jetty:jetty-webapp-derived-platform:11.0.9 declares a runtime of a component:
              - Incompatible because this component declares a platform and the consumer needed documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'runtime' capability org.eclipse.jetty:jetty-webapp:11.0.9 declares a runtime of a component:
              - Incompatible because this component declares a library and the consumer needed documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
   > Could not resolve org.glassfish.jersey.containers:jersey-container-servlet-core:3.1.0-M2.
     Required by:
         project :
      > No matching variant of org.glassfish.jersey.containers:jersey-container-servlet-core:3.1.0-M2 was found. The consumer was configured to find a runtime of sources, as well as attribute 'org.gradle.docselements' with value 'sources' but:
          - Variant 'compile' capability org.glassfish.jersey.containers:jersey-container-servlet-core:3.1.0-M2:
              - Incompatible because this component declares an API of a library and the consumer needed a runtime of documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'enforced-platform-compile' capability org.glassfish.jersey.containers:jersey-container-servlet-core-derived-enforced-platform:3.1.0-M2:
              - Incompatible because this component declares an API of an enforced platform and the consumer needed a runtime of documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'enforced-platform-runtime' capability org.glassfish.jersey.containers:jersey-container-servlet-core-derived-enforced-platform:3.1.0-M2 declares a runtime of a component:
              - Incompatible because this component declares an enforced platform and the consumer needed documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'platform-compile' capability org.glassfish.jersey.containers:jersey-container-servlet-core-derived-platform:3.1.0-M2:
              - Incompatible because this component declares an API of a platform and the consumer needed a runtime of documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'platform-runtime' capability org.glassfish.jersey.containers:jersey-container-servlet-core-derived-platform:3.1.0-M2 declares a runtime of a component:
              - Incompatible because this component declares a platform and the consumer needed documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'runtime' capability org.glassfish.jersey.containers:jersey-container-servlet-core:3.1.0-M2 declares a runtime of a component:
              - Incompatible because this component declares a library and the consumer needed documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
   > Could not resolve com.google.guava:guava:31.1-jre.
     Required by:
         project :
      > No matching variant of com.google.guava:guava:31.1-jre was found. The consumer was configured to find a runtime of sources, as well as attribute 'org.gradle.docselements' with value 'sources' but:
          - Variant 'compile' capability com.google.guava:guava:31.1-jre:
              - Incompatible because this component declares an API of a library and the consumer needed a runtime of documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'enforced-platform-compile' capability com.google.guava:guava-derived-enforced-platform:31.1-jre:
              - Incompatible because this component declares an API of an enforced platform and the consumer needed a runtime of documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'enforced-platform-runtime' capability com.google.guava:guava-derived-enforced-platform:31.1-jre declares a runtime of a component:
              - Incompatible because this component declares an enforced platform and the consumer needed documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'platform-compile' capability com.google.guava:guava-derived-platform:31.1-jre:
              - Incompatible because this component declares an API of a platform and the consumer needed a runtime of documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'platform-runtime' capability com.google.guava:guava-derived-platform:31.1-jre declares a runtime of a component:
              - Incompatible because this component declares a platform and the consumer needed documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'runtime' capability com.google.guava:guava:31.1-jre declares a runtime of a component:
              - Incompatible because this component declares a library and the consumer needed documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
   > Could not resolve edu.ucar:cdm-core:5.4.2.
     Required by:
         project :
      > No matching variant of edu.ucar:cdm-core:5.4.2 was found. The consumer was configured to find a runtime of sources, as well as attribute 'org.gradle.docselements' with value 'sources' but:
          - Variant 'compile' capability edu.ucar:cdm-core:5.4.2:
              - Incompatible because this component declares an API of a library and the consumer needed a runtime of documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'enforced-platform-compile' capability edu.ucar:cdm-core-derived-enforced-platform:5.4.2:
              - Incompatible because this component declares an API of an enforced platform and the consumer needed a runtime of documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'enforced-platform-runtime' capability edu.ucar:cdm-core-derived-enforced-platform:5.4.2 declares a runtime of a component:
              - Incompatible because this component declares an enforced platform and the consumer needed documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'platform-compile' capability edu.ucar:cdm-core-derived-platform:5.4.2:
              - Incompatible because this component declares an API of a platform and the consumer needed a runtime of documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'platform-runtime' capability edu.ucar:cdm-core-derived-platform:5.4.2 declares a runtime of a component:
              - Incompatible because this component declares a platform and the consumer needed documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'runtime' capability edu.ucar:cdm-core:5.4.2 declares a runtime of a component:
              - Incompatible because this component declares a library and the consumer needed documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
   > Could not resolve org.apache.commons:commons-math3:3.6.1.
     Required by:
         project :
      > No matching variant of org.apache.commons:commons-math3:3.6.1 was found. The consumer was configured to find a runtime of sources, as well as attribute 'org.gradle.docselements' with value 'sources' but:
          - Variant 'compile' capability org.apache.commons:commons-math3:3.6.1:
              - Incompatible because this component declares an API of a library and the consumer needed a runtime of documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'enforced-platform-compile' capability org.apache.commons:commons-math3-derived-enforced-platform:3.6.1:
              - Incompatible because this component declares an API of an enforced platform and the consumer needed a runtime of documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'enforced-platform-runtime' capability org.apache.commons:commons-math3-derived-enforced-platform:3.6.1 declares a runtime of a component:
              - Incompatible because this component declares an enforced platform and the consumer needed documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'platform-compile' capability org.apache.commons:commons-math3-derived-platform:3.6.1:
              - Incompatible because this component declares an API of a platform and the consumer needed a runtime of documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'platform-runtime' capability org.apache.commons:commons-math3-derived-platform:3.6.1 declares a runtime of a component:
              - Incompatible because this component declares a platform and the consumer needed documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)
          - Variant 'runtime' capability org.apache.commons:commons-math3:3.6.1 declares a runtime of a component:
              - Incompatible because this component declares a library and the consumer needed documentation
              - Other compatible attributes:
                  - Doesn't say anything about org.gradle.docselements (required 'sources')
                  - Doesn't say anything about the documentation type (required sources)

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 5s
30 actionable tasks: 4 executed, 26 up-to-date
epag commented 3 weeks ago

Original Redmine Comment Author Name: Jesse (Jesse) Original Date: 2022-04-28T23:07:10Z


It looks like the @javadoc@ command is conscious of modules, etc., so perhaps it has the ability to make an aggregated view starting with the top module.

epag commented 3 weeks ago

Original Redmine Comment Author Name: Jesse (Jesse) Original Date: 2022-04-28T23:15:06Z


And javadoc needs the @module-info.java@ or else it complains. If I take the @wres-worker@ @build/tmp/javadoc/javadoc.options@ and pass those args to @javadoc@, no problem, but if I remove the @module-info.java@ from the list of sources to that same command, it complains.

epag commented 3 weeks ago

Original Redmine Comment Author Name: Jesse (Jesse) Original Date: 2022-04-29T17:11:57Z


What are the next jars to modularize?

[wres]$ du -h --max-depth=0 wres-*
16K     wres-broker
1.6M    wres-config
3.9M    wres-datamodel
928K    wres-events
156K    wres-eventsbroker
28K wres-external-services-tests
176K    wres-grid
15M wres-io
548K    wres-messages
4.0M    wres-metrics
100K    wres-redis
2.9M    wres-statistics
400K    wres-system
536K    wres-tasker
322M    wres-thredds-facade
236K    wres-util
904K    wres-vis
196K    wres-worker

Or

[wres]$ du -h -k --max-depth=0 wres-* | sort -n
16  wres-broker
28  wres-external-services-tests
100 wres-redis
156 wres-eventsbroker
176 wres-grid
196 wres-worker
236 wres-util
400 wres-system
536 wres-tasker
548 wres-messages
904 wres-vis
928 wres-events
1552    wres-config
2884    wres-statistics
3992    wres-datamodel
4020    wres-metrics
15084   wres-io
329204  wres-thredds-facade

@wres-grid@, @wres-system@, @wres-util@ look like decent candidates based on size and probably the dep tree too.

epag commented 3 weeks ago

Original Redmine Comment Author Name: Jesse (Jesse) Original Date: 2022-04-29T17:16:16Z


@wres-util@ depends on @wres-datamodel@. @wres-system@ depends on @wres-util@ (and therefore transitively @wres-datamodel@). @wres-grid@ depends on @wres-config@, @wres-util@, @wres-system@, and @wres-datamodel@.

@wres-datamodel@ depends on @wres-config@ and @wres-statistics@. Wait, what? Why does @wres-datamodel@ depend on @wres-statistics@??

epag commented 3 weeks ago

Original Redmine Comment Author Name: Jesse (Jesse) Original Date: 2022-04-29T17:18:35Z


Ah. @wres-statistics@ has all the data model for statistics, i.e. protobuf descriptions, etc., and then @wres-datamodel@ uses those.

epag commented 3 weeks ago

Original Redmine Comment Author Name: Jesse (Jesse) Original Date: 2022-04-29T17:22:15Z


@wres-statistics@ depends on @wres-config@.

Or as gradle puts it:

runtimeClasspath - Runtime classpath of source set 'main'.
+--- project :wres-system
|    +--- project :wres-util
|    |    +--- project :wres-datamodel
|    |    |    +--- project :wres-statistics
...
|    |    |    |    +--- project :wres-config

So the natural order would be:

  1. wres-config
  2. wres-statistics
  3. wres-datamodel
  4. wres-util
  5. wres-system
epag commented 3 weeks ago

Original Redmine Comment Author Name: James (James) Original Date: 2022-04-29T17:35:39Z


@wres-statistics@ depends on @wres-config@? Will have to take a closer look at that. It shouldn't, as I recall. It is basically a bunch of generated classes (java bindings for protobufs), plus one tiny utility class.

epag commented 3 weeks ago

Original Redmine Comment Author Name: James (James) Original Date: 2022-04-29T17:42:38Z


Yeah, clean-up on aisle @wres-statistics@. I guess there was more in there at some point.

epag commented 3 weeks ago

Original Redmine Comment Author Name: James (James) Original Date: 2022-04-29T17:49:08Z


commit:wres|fde40c13c9e6a433a1a5c016be7bb9da8cd927c2.

epag commented 3 weeks ago

Original Redmine Comment Author Name: James (James) Original Date: 2022-04-29T17:58:11Z


> Task :wres-statistics:dependencies

------------------------------------------------------------
Project ':wres-statistics'
------------------------------------------------------------
.
.
.
runtimeClasspath - Runtime classpath of source set 'main'.
\--- com.google.protobuf:protobuf-java:3.20.1
epag commented 3 weeks ago

Original Redmine Comment Author Name: Jesse (Jesse) Original Date: 2022-04-29T18:07:27Z


And right away, we find that @wres-config@ has the most baggage of any of 'em, XML and jaxb, xjc, and the lot.

epag commented 3 weeks ago

Original Redmine Comment Author Name: Jesse (Jesse) Original Date: 2022-04-29T18:08:41Z


Oh, nice. That means @wres-statistics@ can be modularized easily.

epag commented 3 weeks ago

Original Redmine Comment Author Name: Jesse (Jesse) Original Date: 2022-04-29T19:58:10Z


Customer issue #104204 and associated issue #104251

epag commented 3 weeks ago

Original Redmine Comment Author Name: Jesse (Jesse) Original Date: 2022-05-02T16:22:18Z


commit:eb11e4b5a8f1af2f86b2490a5064b24285c43459 makes @wres-statistics@ a JPMS module.

epag commented 3 weeks ago

Original Redmine Comment Author Name: Jesse (Jesse) Original Date: 2022-05-02T19:22:27Z


@wres-config@ is not as straightforward and it seems related to all these old jaxb2 dependencies.

But it looks like progress is happening toward use of the jakarta namespace, e.g. https://github.com/highsource/jaxb2-basics/issues/134

2022/04/26 update:

v0.13.1 has been released. Moving forward to v2.3.x and v3.x (jakarta support). Please open GitHub issues moving forward.

epag commented 3 weeks ago

Original Redmine Comment Author Name: James (James) Original Date: 2022-05-04T12:33:38Z


I get these warnings when running in the IDE. I am not bothered, because they are warnings (edit: and don't lead to errors that prevent success) and I don't see them when running normally. Still, reporting here.

WARNING: Unknown module: wres.statistics specified to --patch-module
WARNING: Unknown module: wres.statistics specified to --add-reads
epag commented 3 weeks ago

Original Redmine Comment Author Name: Jesse (Jesse) Original Date: 2022-05-04T13:47:01Z


Good to know.

It has been so long since I have tried running within IntelliJ IDEA that it looks like my old configs won't run.

epag commented 3 weeks ago

Original Redmine Comment Author Name: Jesse (Jesse) Original Date: 2022-05-04T13:56:30Z


I was able to run scenario505 after some finagling. But that was with IntelliJ IDEA 2021.3.2. I'm updating now.

epag commented 3 weeks ago

Original Redmine Comment Author Name: Jesse (Jesse) Original Date: 2022-05-04T16:12:27Z


I can't find that message (@WARNING: Unknown module: wres.statistics specified to --patch-module@) locally, is it when you build or run? I cannot easily display the background build task when running either, so is it showing up there?

I have @IntelliJ IDEA 2021.3.3 (Community Edition)@ using @Runtime version: 11.0.15+10-LTS amd64@ @VM: OpenJDK 64-Bit Server VM by Azul Systems, Inc.@ on GNU/Linux.

epag commented 3 weeks ago

Original Redmine Comment Author Name: Jesse (Jesse) Original Date: 2022-05-04T16:23:00Z


Maybe a @clean@ and then @installDist@? Does it still show up then?

epag commented 3 weeks ago

Original Redmine Comment Author Name: James (James) Original Date: 2022-05-04T16:30:55Z


No, build is fine, this is when I run. I wouldn't sweat it, there is no issue when I run the app using the run script, so it is unlikely to be our software.

I cleaned, yes. I can probably track it down, but I just have zero motivation to do so (vs. other things) because nothing is broken.

edit: in other words, I wasn't posting for help - although I appreciate the suggestions - more as a record of an observation.

epag commented 3 weeks ago

Original Redmine Comment Author Name: Jesse (Jesse) Original Date: 2022-05-04T19:54:48Z


Fair enough.

epag commented 3 weeks ago

Original Redmine Comment Author Name: James (James) Original Date: 2022-05-20T12:02:13Z


Noting again that this work broke the @aggregateJavadocs@ task, which means that we do not currently have aggregated javadocs associated with a build.

epag commented 3 weeks ago

Original Redmine Comment Author Name: James (James) Original Date: 2022-05-20T12:16:07Z


James wrote:

Noting again that this work broke the @aggregateJavadocs@ task, which means that we do not currently have aggregated javadocs associated with a build.

@io.freefair.aggregate-javadoc@ looks like a good option, but only when we upgrade to gradle 7.4.2 or later:

https://docs.freefair.io/gradle-plugins/current/reference/#_system_requirements

epag commented 3 weeks ago

Original Redmine Comment Author Name: James (James) Original Date: 2023-01-12T11:51:41Z


See #62732-80. Worth a try in due course. It would be nice to bring back our aggregated docs.

epag commented 3 weeks ago

Original Redmine Comment Author Name: James (James) Original Date: 2023-01-12T12:06:13Z


James wrote:

See #62732-80. Worth a try in due course. It would be nice to bring back our aggregated docs.

Although this is a cause for pessimism:

https://github.com/freefair/gradle-plugins/issues/409

We'll see. Should probably break into a separate ticket.

epag commented 3 weeks ago

Original Redmine Comment Author Name: James (James) Original Date: 2023-01-12T15:02:18Z


Broken out the javadoc issue, back to the backlog for this one.