Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [jakartaee-platform-dev] Example of web profile dependency graph in spec

Hi Scott and Arjan,

last Friday we (Dirk, Gerd and myself) discussed your requests - both is possible to do and may be valid for a cleaned overview, but might hide some of the issues.

Good news is, it looks like the JUnit and TestNG dependencies are test scoped. But is there a valid reason for test dependencies in the API at all? Should this not part of the TCK module only?
At the moment, it is possible to get some additional information to each dependency including the scope to be able check that.

Regarding the different versions, this is a real issue - just filtering hides them, but might show clearer, how the release dependencies should be.
Dirk added a separate CSV report (see attachment), that shows the version difference separately.

The discussed solution to fulfil your requests at best might be make that filtering configurable - so there is still the option to show the dirty details if necessary ;-)

I also configured the staging repo besides Maven Central - the run there reports the issues with the missing dependencies in the Maven log, that would need to be rebuild.

Planed is also to add the mentioned virtual generated dependency for Java SE again in an future update.

We will show our current state today in the Platform call - if there are further requests, don't hesitate to ask for them!

Best,
Jan


Am 15.01.22 um 00:35 schrieb arjan tijms:
It's also interesting that there's a few essentially duplicate dependencies there in slightly different versions. Might want to filter these out to (merge them into their major version).

On Fri, Jan 14, 2022 at 2:40 AM Scott Stark <starksm64@xxxxxxxxx> wrote:
Can you filter out the test scope dependencies?

On Jan 13, 2022 at 1:38:18 PM, Jan Westerkamp <jan.westerkamp@xxxxxxx> wrote:
Hi,

as mentioned in the last Jakarta EE Platform calls, Dirk, Gerd and me
did a little experiment in the CyberLand Code Camp with jQAssistant
(https://jqassistant.org/):

We created a dependency graph (as GraphML for yEd and PlantUML with SVG
to be included in AsciiDoc) based on Maven Central's last release
Jakarta EE 9.1 (see attachments).
jQAssistant can create such reports including dependencies as graph,
including defining constraints with enforcement and reporting of violations.
It is very flexible in use, because it uses a Graph Database (Neo4J)
internally and Cipher to operate on the scanned graph representation of
a project. In example during the experiment we created a virtual
dependency to the specific Java SE Version.
A nice introduction video for jQA can be found here:
https://vimeo.com/170797227

Dirk created a demo repo for further examination:
https://github.com/jqassistant-demo/jakarta-ee-dependencies (without the
Java SE dependency yet)

Note: Look at the manual for the necessary JVM parameter configuration
depending on the version and spend some time, if you want to try jQA
yourself with Jakarta.
When view the results, expect some issues because of the complexity of
the Jakarta EE dependencies, i.e. Firefox creates some artefacts when
rendering the SVG (a reload helps) and the Eclipse AsciiDoc plugin
preview might time out... ;-)

As you can see, there are a lot of things in 9.1 that need to be
verified (tool misconfiguration or true positive finding) and
potentially to be fixed, like strange Maven Group IDs (...sun...),
Artifact IDs, versions (RCs, different versions) and dependencies (like
to JUnit from the API).

Hopefully, we will introduce it on one of the next Jakarta EE Platform
calls.

Next steps would be to reintegrate the virtual Java SE dependencies and
use the staging Maven repo for the current Jakarta EE 10 state too.

Best,
Jan

PS: Hopefully this is helpful to define a target project structure plan
with related naming conventions, that can be verified automatically in
the future.


Am 01.12.21 um 07:01 schrieb Scott Stark:
I created a PR that adds a dependency section to the web profile spec
that provides a graphical view of the direct api dependencies using
the asciidoctor-diagram plugin and graphviz as the format. An example
of the current graph is attached.

https://github.com/eclipse-ee4j/jakartaee-platform/pull/440



_______________________________________________
jakartaee-platform-dev mailing list
jakartaee-platform-dev@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jakartaee-platform-dev

_______________________________________________
jakartaee-platform-dev mailing list
jakartaee-platform-dev@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jakartaee-platform-dev
_______________________________________________
jakartaee-platform-dev mailing list
jakartaee-platform-dev@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jakartaee-platform-dev

_______________________________________________
jakartaee-platform-dev mailing list
jakartaee-platform-dev@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jakartaee-platform-dev


"GroupId","ArtifactId","Version"
"com.sun.activation","jakarta.activation","2.0.1, 2.0.0"
"com.sun.mail","jakarta.mail","2.0.1"
"jakarta.activation","jakarta.activation-api","2.0.1"
"jakarta.annotation","jakarta.annotation-api","1.3.5, 2.0.0"
"jakarta.authentication","jakarta.authentication-api","2.0.0"
"jakarta.authorization","jakarta.authorization-api","2.0.0"
"jakarta.batch","jakarta.batch-api","2.0.0"
"jakarta.ejb","jakarta.ejb-api","4.0.0-RC2, 4.0.0"
"jakarta.el","jakarta.el-api","4.0.0, 4.0.0-RC1"
"jakarta.enterprise","jakarta.enterprise.cdi-api","3.0.0, 3.0.0-M1"
"jakarta.enterprise.concurrent","jakarta.enterprise.concurrent-api","2.0.0"
"jakarta.faces","jakarta.faces-api","3.0.0"
"jakarta.inject","jakarta.inject-api","2.0.0, 2.0.0-RC2"
"jakarta.interceptor","jakarta.interceptor-api","2.0.0-RC1, 2.0.0"
"jakarta.jms","jakarta.jms-api","3.0.0"
"jakarta.json","jakarta.json-api","2.0.0, 2.0.1"
"jakarta.json.bind","jakarta.json.bind-api","2.0.0"
"jakarta.jws","jakarta.jws-api","3.0.0"
"jakarta.mail","jakarta.mail-api","2.0.1"
"jakarta.persistence","jakarta.persistence-api","3.0.0"
"jakarta.platform","jakarta.jakartaee-web-api","9.1.0"
"jakarta.resource","jakarta.resource-api","2.0.0"
"jakarta.security.enterprise","jakarta.security.enterprise-api","2.0.0"
"jakarta.servlet","jakarta.servlet-api","5.0.0"
"jakarta.servlet.jsp","jakarta.servlet.jsp-api","3.0.0"
"jakarta.servlet.jsp.jstl","jakarta.servlet.jsp.jstl-api","2.0.0"
"jakarta.transaction","jakarta.transaction-api","2.0.0-RC2, 2.0.0-RC1, 2.0.0-RC3, 2.0.0"
"jakarta.validation","jakarta.validation-api","3.0.0"
"jakarta.websocket","jakarta.websocket-api","2.0.0"
"jakarta.ws.rs","jakarta.ws.rs-api","3.0.0"
"jakarta.xml.bind","jakarta.xml.bind-api","3.0.0, 3.0.1"
"jakarta.xml.soap","jakarta.xml.soap-api","2.0.0, 2.0.1"
"jakarta.xml.ws","jakarta.xml.ws-api","3.0.0, 3.0.1"
"junit","junit","4.12, 4.13.2, 4.13"
"org.glassfish","jakarta.faces","3.0.0-RC5, 3.0.0"
"org.testng","testng","6.8.8, 6.11"

Attachment: jakarta-ee-dependencies_PlatformDependencyDiagram.svg
Description: image/svg

@startuml
skinparam componentStyle uml2
  [jakarta.servlet.jsp:jakarta.servlet.jsp-api:jar:3.0.0] <<Artifact File Maven Release>> as n16899
  [jakarta.persistence:jakarta.persistence-api:jar:3.0.0] <<Artifact File Maven Release>> as n16900
  [com.sun.activation:jakarta.activation:jar:2.0.0] <<Artifact File Maven>> as n179591
  [jakarta.ws.rs:jakarta.ws.rs-api:jar:3.0.0] <<Artifact File Maven>> as n16901
  [jakarta.jws:jakarta.jws-api:jar:3.0.0] <<Artifact File Maven Release>> as n16902
  [jakarta.authorization:jakarta.authorization-api:jar:2.0.0] <<Artifact File Maven Release>> as n20874
  [jakarta.el:jakarta.el-api:jar:4.0.0-RC1] <<Artifact File Maven Release>> as n527
  [jakarta.xml.bind:jakarta.xml.bind-api:jar:3.0.0] <<Artifact File Maven Release>> as n41360
  [jakarta.xml.ws:jakarta.xml.ws-api:jar:3.0.0] <<Artifact File Maven Release>> as n41361
  [jakarta.xml.soap:jakarta.xml.soap-api:jar:2.0.0] <<Artifact File Maven Release>> as n41362
  [jakarta.annotation:jakarta.annotation-api:jar:1.3.5] <<Artifact File Maven Release>> as n42004
  [jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api:jar:2.0.0] <<Artifact File Maven Release>> as n29848
  [jakarta.websocket:jakarta.websocket-api:jar:2.0.0] <<Artifact File Maven>> as n29849
  [jakarta.json:jakarta.json-api:jar:2.0.1] <<Artifact File Maven Release>> as n29850
  [jakarta.json.bind:jakarta.json.bind-api:jar:2.0.0] <<Artifact File Maven Release>> as n29851
  [jakarta.validation:jakarta.validation-api:jar:3.0.0] <<Artifact File Maven Release>> as n29852
  [jakarta.authentication:jakarta.authentication-api:jar:2.0.0] <<Artifact File Maven Release>> as n29853
  [jakarta.security.enterprise:jakarta.security.enterprise-api:jar:2.0.0] <<Artifact File Maven>> as n29854
  [org.glassfish:jakarta.faces:jar:3.0.0] <<Artifact File Maven>> as n29855
  [org.testng:testng:jar:6.8.8] <<Artifact File Maven>> as n16546
  [jakarta.transaction:jakarta.transaction-api:jar:2.0.0] <<Artifact File Maven Release>> as n23715
  [jakarta.faces:jakarta.faces-api:jar:3.0.0] <<Artifact File Maven Release>> as n23716
  [jakarta.jms:jakarta.jms-api:jar:3.0.0] <<Artifact File Maven Release>> as n23717
  [jakarta.resource:jakarta.resource-api:jar:2.0.0] <<Artifact File Maven Release>> as n23718
  [jakarta.ejb:jakarta.ejb-api:jar:4.0.0] <<Artifact File Maven Release>> as n23719
  [jakarta.transaction:jakarta.transaction-api:jar:2.0.0-RC1] <<Artifact File Maven Release>> as n5033
  [jakarta.inject:jakarta.inject-api:jar:2.0.0-RC2] <<Artifact File Maven Release>> as n108589
  [junit:junit:jar:4.13] <<Artifact File Maven>> as n102831
  [junit:junit:jar:4.12] <<Artifact File Maven>> as n4410
  [junit:junit:jar:4.13.2] <<Artifact File Maven>> as n175036
  [jakarta.json:jakarta.json-api:jar:2.0.0] <<Artifact File Maven Release>> as n40900
  [jakarta.platform:jakarta.jakartaee-api:jar:9.1.0] <<Artifact File Maven Release>> as n30669
  [jakarta.interceptor:jakarta.interceptor-api:jar:2.0.0-RC1] <<Artifact File Maven Release>> as n102363
  [jakarta.enterprise:jakarta.enterprise.cdi-api:jar:3.0.0-M1] <<Artifact File Maven Release>> as n102362
  [org.glassfish:jakarta.faces:jar:sources:3.0.0-RC5] <<Artifact File Maven>> as n218211
  [jakarta.ejb:jakarta.ejb-api:jar:4.0.0-RC2] <<Artifact File Maven Release>> as n5986
  [jakarta.transaction:jakarta.transaction-api:jar:2.0.0-RC2] <<Artifact File Maven Release>> as n5987
  [com.sun.activation:jakarta.activation:jar:2.0.1] <<Artifact File Maven>> as n118502
  [jakarta.activation:jakarta.activation-api:jar:2.0.1] <<Artifact File Maven Release>> as n30312
  [jakarta.mail:jakarta.mail-api:jar:2.0.1] <<Artifact File Maven Release>> as n30313
  [com.sun.mail:jakarta.mail:jar:2.0.1] <<Artifact File Maven>> as n30314
  [jakarta.transaction:jakarta.transaction-api:jar:2.0.0-RC3] <<Artifact File Maven Release>> as n210152
  [jakarta.enterprise.concurrent:jakarta.enterprise.concurrent-api:jar:2.0.0] <<Artifact File Maven Release>> as n30315
  [jakarta.batch:jakarta.batch-api:jar:2.0.0] <<Artifact File Maven Release>> as n30316
  [jakarta.xml.bind:jakarta.xml.bind-api:jar:3.0.1] <<Artifact File Maven Release>> as n30317
  [jakarta.xml.ws:jakarta.xml.ws-api:jar:3.0.1] <<Artifact File Maven Release>> as n30318
  [jakarta.platform:jakarta.jakartaee-web-api:jar:9.1.0] <<Artifact File Maven Release>> as n29807
  [jakarta.xml.soap:jakarta.xml.soap-api:jar:2.0.1] <<Artifact File Maven Release>> as n30319
  [jakarta.enterprise:jakarta.enterprise.cdi-api:jar:3.0.0] <<Artifact File Maven Release>> as n7795
  [jakarta.interceptor:jakarta.interceptor-api:jar:2.0.0] <<Artifact File Maven Release>> as n7796
  [jakarta.annotation:jakarta.annotation-api:jar:2.0.0] <<Artifact File Maven Release>> as n7797
  [jakarta.servlet:jakarta.servlet-api:jar:5.0.0] <<Artifact File Maven Release>> as n7798
  [jakarta.inject:jakarta.inject-api:jar:2.0.0] <<Artifact File Maven Release>> as n7799
  [jakarta.el:jakarta.el-api:jar:4.0.0] <<Artifact File Maven Release>> as n7800
  [org.testng:testng:jar:6.11] <<Artifact File Maven>> as n49273

n29807 --> n29850 : depends on (scope:compile, optional:true)
n30313 --> n118502 : depends on (scope:provided, optional:false)
n29807 --> n7796 : depends on (scope:compile, optional:true)
n29807 --> n23719 : depends on (scope:compile, optional:true)
n5987 --> n102362 : depends on (scope:provided, optional:false)
n29807 --> n7797 : depends on (scope:compile, optional:true)
n5987 --> n102363 : depends on (scope:provided, optional:false)
n29807 --> n29854 : depends on (scope:compile, optional:true)
n41361 --> n41360 : depends on (scope:compile, optional:false)
n29807 --> n16899 : depends on (scope:compile, optional:true)
n41361 --> n16902 : depends on (scope:compile, optional:false)
n29807 --> n29849 : depends on (scope:compile, optional:true)
n29807 --> n7798 : depends on (scope:compile, optional:true)
n41361 --> n41362 : depends on (scope:compile, optional:false)
n29807 --> n23715 : depends on (scope:compile, optional:true)
n41360 --> n179591 : depends on (scope:compile, optional:false)
n30669 --> n30317 : depends on (scope:compile, optional:true)
n29807 --> n29853 : depends on (scope:compile, optional:true)
n29807 --> n29855 : depends on (scope:compile, optional:true)
n30669 --> n30314 : depends on (scope:compile, optional:true)
n30318 --> n16902 : depends on (scope:compile, optional:false)
n30669 --> n30315 : depends on (scope:compile, optional:true)
n210152 --> n102363 : depends on (scope:provided, optional:false)
n30669 --> n23718 : depends on (scope:compile, optional:true)
n30318 --> n30319 : depends on (scope:compile, optional:false)
n210152 --> n102362 : depends on (scope:provided, optional:false)
n30669 --> n29855 : depends on (scope:compile, optional:true)
n30318 --> n30317 : depends on (scope:compile, optional:false)
n23715 --> n102362 : depends on (scope:provided, optional:false)
n30319 --> n118502 : depends on (scope:compile, optional:false)
n30669 --> n23717 : depends on (scope:compile, optional:true)
n23716 --> n29852 : depends on (scope:provided, optional:false)
n29851 --> n40900 : depends on (scope:provided, optional:false)
n30669 --> n30313 : depends on (scope:compile, optional:true)
n23715 --> n102363 : depends on (scope:provided, optional:false)
n30669 --> n30319 : depends on (scope:compile, optional:true)
n30319 --> n175036 : depends on (scope:test, optional:false)
n29851 --> n4410 : depends on (scope:test, optional:false)
n5033 --> n102363 : depends on (scope:provided, optional:false)
n23716 --> n29849 : depends on (scope:provided, optional:false)
n5033 --> n102362 : depends on (scope:provided, optional:false)
n29848 --> n7798 : depends on (scope:compile, optional:false)
n30669 --> n30312 : depends on (scope:compile, optional:true)
n41362 --> n4410 : depends on (scope:test, optional:false)
n23716 --> n40900 : depends on (scope:provided, optional:true)
n5986 --> n5033 : depends on (scope:compile, optional:false)
n29852 --> n49273 : depends on (scope:test, optional:false)
n30669 --> n20874 : depends on (scope:compile, optional:true)
n41362 --> n179591 : depends on (scope:compile, optional:false)
n20874 --> n7798 : depends on (scope:compile, optional:false)
n29848 --> n16899 : depends on (scope:provided, optional:false)
n30669 --> n30318 : depends on (scope:compile, optional:true)
n16899 --> n7798 : depends on (scope:provided, optional:false)
n23716 --> n29848 : depends on (scope:provided, optional:true)
n23716 --> n7800 : depends on (scope:provided, optional:false)
n29848 --> n7800 : depends on (scope:compile, optional:false)
n30317 --> n118502 : depends on (scope:compile, optional:false)
n30669 --> n30316 : depends on (scope:compile, optional:true)
n16899 --> n7800 : depends on (scope:provided, optional:false)
n23716 --> n218211 : depends on (scope:provided, optional:false)
n30669 --> n16902 : depends on (scope:compile, optional:true)
n23718 --> n5033 : depends on (scope:compile, optional:false)
n23716 --> n5986 : depends on (scope:provided, optional:true)
n29848 --> n41360 : depends on (scope:compile, optional:false)
n30669 --> n29807 : depends on (scope:compile, optional:true)
n23716 --> n41360 : depends on (scope:provided, optional:true)
n23716 --> n41361 : depends on (scope:provided, optional:true)
n7795 --> n7796 : depends on (scope:compile, optional:false)
n23718 --> n7797 : depends on (scope:compile, optional:false)
n7795 --> n7800 : depends on (scope:compile, optional:false)
n23716 --> n7798 : depends on (scope:provided, optional:false)
n7795 --> n16546 : depends on (scope:test, optional:false)
n23716 --> n16899 : depends on (scope:provided, optional:true)
n29807 --> n23716 : depends on (scope:compile, optional:true)
n23716 --> n7797 : depends on (scope:provided, optional:false)
n23716 --> n16900 : depends on (scope:provided, optional:true)
n29807 --> n7799 : depends on (scope:compile, optional:true)
n23716 --> n7795 : depends on (scope:provided, optional:false)
n7795 --> n5986 : depends on (scope:provided, optional:false)
n29807 --> n29852 : depends on (scope:compile, optional:true)
n29807 --> n16900 : depends on (scope:compile, optional:true)
n7795 --> n7799 : depends on (scope:compile, optional:false)
n23716 --> n210152 : depends on (scope:provided, optional:true)
n29807 --> n29851 : depends on (scope:compile, optional:true)
n7795 --> n5987 : depends on (scope:provided, optional:false)
n29807 --> n16901 : depends on (scope:compile, optional:true)
n30316 --> n7795 : depends on (scope:provided, optional:false)
n30315 --> n102831 : depends on (scope:test, optional:false)
n7796 --> n7797 : depends on (scope:compile, optional:false)
n29807 --> n7800 : depends on (scope:compile, optional:true)
n102362 --> n527 : depends on (scope:compile, optional:false)
n29807 --> n29848 : depends on (scope:compile, optional:true)
n102362 --> n16546 : depends on (scope:test, optional:false)
n102362 --> n108589 : depends on (scope:compile, optional:false)
n29807 --> n7795 : depends on (scope:compile, optional:true)
n30316 --> n7799 : depends on (scope:provided, optional:false)
n23719 --> n23715 : depends on (scope:compile, optional:false)
n102363 --> n42004 : depends on (scope:compile, optional:false)
n102362 --> n102363 : depends on (scope:compile, optional:false)

@enduml

Back to the top