[
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,
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
@startuml
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
[jakarta.security.enterprise:jakarta.security.enterprise-api:jar:2.0.0] <<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
[jakarta.xml.ws:jakarta.xml.ws-api:jar:3.0.0] <<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
[jakarta.xml.ws:jakarta.xml.ws-api:jar:3.0.1] <<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
[jakarta.ws.rs:jakarta.ws.rs-api:jar:3.0.0] <<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
@enduml
Attachment:
jakarta-ee-dependencies_PlatformDependencyReport.svg
Description: image/svg