[
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).
Can you filter out the test scope
dependencies?
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
"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