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


as mentioned in the last Jakarta EE Platform calls, Dirk, Gerd and me did a little experiment in the CyberLand Code Camp with jQAssistant (

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:

Dirk created a demo repo for further examination: (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.


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.

jakartaee-platform-dev mailing list
To unsubscribe from this list, visit

skinparam componentStyle uml2
  [jakarta.json:jakarta.json-api:jar:2.0.0] <<Artifact File Maven Release>> as n219651
  [com.sun.activation:jakarta.activation:jar:2.0.1] <<Artifact File Maven>> as n126855
  [jakarta.faces:jakarta.faces-api:jar:3.0.0] <<Artifact File Maven Release>> as n230159
  [jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api:jar:2.0.0] <<Artifact File Maven Release>> as n230158
  [jakarta.transaction:jakarta.transaction-api:jar:2.0.0-RC3] <<Artifact File Maven Release>> as n36112
  [jakarta.ejb:jakarta.ejb-api:jar:4.0.0] <<Artifact File Maven Release>> as n230163
  [jakarta.json.bind:jakarta.json.bind-api:jar:2.0.0] <<Artifact File Maven Release>> as n230162
  [jakarta.json:jakarta.json-api:jar:2.0.1] <<Artifact File Maven Release>> as n230161
  [jakarta.websocket:jakarta.websocket-api:jar:2.0.0] <<Artifact File Maven>> as n230160
  [org.glassfish:jakarta.faces:jar:sources:3.0.0-RC5] <<Artifact File Maven>> as n27796
  [] <<Artifact File Maven>> as n230167
  [jakarta.authentication:jakarta.authentication-api:jar:2.0.0] <<Artifact File Maven Release>> as n230166
  [junit:junit:jar:4.13] <<Artifact File Maven>> as n142996
  [jakarta.validation:jakarta.validation-api:jar:3.0.0] <<Artifact File Maven Release>> as n230165
  [org.testng:testng:jar:6.8.8] <<Artifact File Maven>> as n238100
  [jakarta.transaction:jakarta.transaction-api:jar:2.0.0] <<Artifact File Maven Release>> as n230164
  [jakarta.transaction:jakarta.transaction-api:jar:2.0.0-RC1] <<Artifact File Maven Release>> as n249114
  [org.glassfish:jakarta.faces:jar:3.0.0] <<Artifact File Maven>> as n230168
  [junit:junit:jar:4.12] <<Artifact File Maven>> as n248481
  [jakarta.enterprise:jakarta.enterprise.cdi-api:jar:3.0.0-M1] <<Artifact File Maven Release>> as n144575
  [jakarta.interceptor:jakarta.interceptor-api:jar:2.0.0-RC1] <<Artifact File Maven Release>> as n144576
  [com.sun.activation:jakarta.activation:jar:2.0.0] <<Artifact File Maven>> as n67016
  [jakarta.platform:jakarta.jakartaee-api:jar:9.1.0] <<Artifact File Maven Release>> as n230984
  [jakarta.xml.bind:jakarta.xml.bind-api:jar:3.0.0] <<Artifact File Maven Release>> as n218063
  [jakarta.annotation:jakarta.annotation-api:jar:1.3.5] <<Artifact File Maven Release>> as n218707
  [jakarta.xml.soap:jakarta.xml.soap-api:jar:2.0.0] <<Artifact File Maven Release>> as n218065
  [] <<Artifact File Maven Release>> as n218064
  [jakarta.transaction:jakarta.transaction-api:jar:2.0.0-RC2] <<Artifact File Maven Release>> as n248021
  [jakarta.ejb:jakarta.ejb-api:jar:4.0.0-RC2] <<Artifact File Maven Release>> as n248020
  [jakarta.el:jakarta.el-api:jar:4.0.0-RC1] <<Artifact File Maven Release>> as n253020
  [jakarta.mail:jakarta.mail-api:jar:2.0.1] <<Artifact File Maven Release>> as n230627
  [jakarta.activation:jakarta.activation-api:jar:2.0.1] <<Artifact File Maven Release>> as n230626
  [jakarta.jms:jakarta.jms-api:jar:3.0.0] <<Artifact File Maven Release>> as n230625
  [jakarta.batch:jakarta.batch-api:jar:2.0.0] <<Artifact File Maven Release>> as n230631
  [jakarta.annotation:jakarta.annotation-api:jar:2.0.0] <<Artifact File Maven Release>> as n245735
  [jakarta.inject:jakarta.inject-api:jar:2.0.0-RC2] <<Artifact File Maven Release>> as n138470
  [jakarta.interceptor:jakarta.interceptor-api:jar:2.0.0] <<Artifact File Maven Release>> as n245734
  [jakarta.enterprise.concurrent:jakarta.enterprise.concurrent-api:jar:2.0.0] <<Artifact File Maven Release>> as n230630
  [jakarta.enterprise:jakarta.enterprise.cdi-api:jar:3.0.0] <<Artifact File Maven Release>> as n245733
  [jakarta.resource:jakarta.resource-api:jar:2.0.0] <<Artifact File Maven Release>> as n230629
  [jakarta.platform:jakarta.jakartaee-web-api:jar:9.1.0] <<Artifact File Maven Release>> as n230117
  [com.sun.mail:jakarta.mail:jar:2.0.1] <<Artifact File Maven>> as n230628
  [jakarta.el:jakarta.el-api:jar:4.0.0] <<Artifact File Maven Release>> as n245738
  [jakarta.xml.soap:jakarta.xml.soap-api:jar:2.0.1] <<Artifact File Maven Release>> as n230634
  [jakarta.inject:jakarta.inject-api:jar:2.0.0] <<Artifact File Maven Release>> as n245737
  [] <<Artifact File Maven Release>> as n230633
  [jakarta.xml.bind:jakarta.xml.bind-api:jar:3.0.1] <<Artifact File Maven Release>> as n230632
  [jakarta.servlet:jakarta.servlet-api:jar:5.0.0] <<Artifact File Maven Release>> as n245736
  [junit:junit:jar:4.13.2] <<Artifact File Maven>> as n198124
  [] <<Artifact File Maven>> as n236407
  [jakarta.persistence:jakarta.persistence-api:jar:3.0.0] <<Artifact File Maven Release>> as n236406
  [jakarta.servlet.jsp:jakarta.servlet.jsp-api:jar:3.0.0] <<Artifact File Maven Release>> as n236405
  [jakarta.authorization:jakarta.authorization-api:jar:2.0.0] <<Artifact File Maven Release>> as n232187
  [org.testng:testng:jar:6.11] <<Artifact File Maven>> as n168058
  [jakarta.jws:jakarta.jws-api:jar:3.0.0] <<Artifact File Maven Release>> as n236408

n230158 --> n236405 : depends on
n249114 --> n144575 : depends on
n230158 --> n245738 : depends on
n230629 --> n245735 : depends on
n249114 --> n144576 : depends on
n230629 --> n249114 : depends on
n248021 --> n144575 : depends on
n230164 --> n144576 : depends on
n248021 --> n144576 : depends on
n230164 --> n144575 : depends on
n218063 --> n67016 : depends on
n230984 --> n232187 : depends on
n230984 --> n230632 : depends on
n230984 --> n230627 : depends on
n248020 --> n249114 : depends on
n230984 --> n230117 : depends on
n230984 --> n230625 : depends on
n230984 --> n230634 : depends on
n230984 --> n230631 : depends on
n230984 --> n236408 : depends on
n230162 --> n219651 : depends on
n230984 --> n230633 : depends on
n230162 --> n248481 : depends on
n230984 --> n230168 : depends on
n36112 --> n144575 : depends on
n230984 --> n230628 : depends on
n36112 --> n144576 : depends on
n230984 --> n230626 : depends on
n230984 --> n230630 : depends on
n230984 --> n230629 : depends on
n230117 --> n230164 : depends on
n230117 --> n230160 : depends on
n230117 --> n245735 : depends on
n218064 --> n218063 : depends on
n230117 --> n245738 : depends on
n218064 --> n218065 : depends on
n230117 --> n230162 : depends on
n230117 --> n245733 : depends on
n218064 --> n236408 : depends on
n236405 --> n245738 : depends on
n230117 --> n245737 : depends on
n236405 --> n245736 : depends on
n230117 --> n245734 : depends on
n230117 --> n230168 : depends on
n230117 --> n230158 : depends on
n230117 --> n236406 : depends on
n230117 --> n230163 : depends on
n230117 --> n236407 : depends on
n230117 --> n230167 : depends on
n230117 --> n245736 : depends on
n230630 --> n142996 : depends on
n218065 --> n67016 : depends on
n230117 --> n230161 : depends on
n230631 --> n245733 : depends on
n218065 --> n248481 : depends on
n230163 --> n230164 : depends on
n230117 --> n230166 : depends on
n230631 --> n245737 : depends on
n230117 --> n230159 : depends on
n230117 --> n230165 : depends on
n230117 --> n236405 : depends on
n245734 --> n245735 : depends on
n230627 --> n126855 : depends on
n230159 --> n245733 : depends on
n230159 --> n230160 : depends on
n230159 --> n245735 : depends on
n144575 --> n144576 : depends on
n230159 --> n36112 : depends on
n144575 --> n138470 : depends on
n230159 --> n219651 : depends on
n144575 --> n253020 : depends on
n230159 --> n230158 : depends on
n144575 --> n238100 : depends on
n230165 --> n168058 : depends on
n230159 --> n245738 : depends on
n144576 --> n218707 : depends on
n230159 --> n236406 : depends on
n230159 --> n218063 : depends on
n230159 --> n245736 : depends on
n230159 --> n27796 : depends on
n230159 --> n248020 : depends on
n232187 --> n245736 : depends on
n230159 --> n236405 : depends on
n230159 --> n218064 : depends on
n230159 --> n230165 : depends on
n230632 --> n126855 : depends on
n245733 --> n245737 : depends on
n245733 --> n245734 : depends on
n245733 --> n245738 : depends on
n230633 --> n236408 : depends on
n245733 --> n248020 : depends on
n230633 --> n230634 : depends on
n245733 --> n238100 : depends on
n230633 --> n230632 : depends on
n230634 --> n198124 : depends on
n245733 --> n248021 : depends on
n230634 --> n126855 : depends on
n230158 --> n218063 : depends on
n230158 --> n245736 : depends on


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

Back to the top