在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称(OpenSource Name):ltearno/pom-explorer开源软件地址(OpenSource Url):https://github.com/ltearno/pom-explorer开源编程语言(OpenSource Language):JavaScript 89.4%开源软件介绍(OpenSource Introduction):pom-explorerThe Maven's swiss knife DescriptionWhen a team writes a lot of maven projects, it is painful to manage versionning and connections between them. This tool helps you to update you pom graph easily. It has several objectives:
Main functions :
This project is in active development and serves also as a platform to work on useful use cases that can manifest. It is used to manage the versions, connections and dependencies of 43 projects. If you have ideas or anything like that, don't hesitate to write a pull request. This project is certainly not production ready nor really user-friendly. That's because the functionality set is not well defined yet. So any feature you need related to your pom dependency graph could be added in the feature list and will maybe impact the final architecture. So that is certainly the moment for you to say what you need in this project ! Build and runTo build :
To run :
Then go with your browser on this address
If you want the application to bind on a different port, you can specify the listening port like this :
This is the console to the application. You can type commands in the prompt, they will be sent to the server and it will answer. Let's start by typing Analysing maven projectsIf you use a specific maven configuration file, you can specify it prior to the next commands with the First, you will want to analyze some projects. Depending on where they are on your computer, you can type something like this in the application console/web page :
The program will analyze the directory recursively to find all the If you need, you can add more analyzes by repeating the Basic commandsLet's have a look at the GAVs (groupId/artifactId/version) that are registered in the graph :
Here's an example of a result : Visualization of the dependency graph3D live graphIt is possible to visualize dynamically the graph dependency. The graph is using WebGL and allows to walk in the 3D space with the W, S, A, D, Q and E keys. It is using the VivaGraph and NGraph libraries. You can enter the
Then click on the given link to see the graph for your current session. The graph windowIn the main part, you can navigate with W,A,S,D,E,A and the arrow keys. On the right side, you can edit javascript filters and customizers for node and links. You can filter edges and vertices, and even change their color and size with the right panel of the window. The graph is given unfiltered by the server to the client, and you can then customize what to render and how to render it. The panel on the right side of the graph page allows to stop the animation (the checkbox at the bottom) and also to customize
the rendering. This is done by customizing javascript callback functions that are called by the rendering engine. Click the For instance in the confirmNode function, you can add the following code to only accept gavs containing the string "my.groupIds' :
Then you hit the Refresh button to update the graph. There are three other functions to filter the relations (confirmRelation), to customize the node appearance (node) and to customize the relation appearance (linkColor). There are a few samples in the panel itself, written as code comments. GraphML exportYou can export a graphml file with the You can then use this file with an editor like yEd... This will give you something like that for instance : Finding useless dependenciesAfter a long time of development, your projects might include dependencies that are not needed anymore. However, chasing those obsolete dependencies can be a long task because of the number of dependencies to analyze. Moreover, it is error prone to do it by hand. Pom Explorer finds those dependencies for you. How does it do that ? There are X phases when searching useless declared dependencies in a project :
To analyze dependencies which are not needed by a project, use the
This will launch the analyze. When finished, the results will be displayed :
Section by section, here is what is displayed : Analyzed dependencies
Dependencies analysisThen each dependency is analyzed and the corresponding resolved jar file path is displayed, together with the number of classes that are provided by this dependency. You can add the Referenced FQNs analysisThen all the java source files of the analyzed project are parsed to find which fqn they reference. Again the Not found FQNsThen a section displays the referenced FQNs without a provider. That means the fqns that were found to be referenced in the analyzed project but for which the program did not find a dependency providing this fqn. Note that false positive can happen ! First fqn references might not reference a real class fqn, like here where FileChannel.MapMode.READ_ONLY is an enum value. Secondly, the referenced fqn might be defined in a transitive dependency of an external library, which has not been added to the dependency graph. There is a command that should be developped to solve this problem. Useless hierarchy dependenciesThe next section displays the GAV of the dependencies from the project's hierarchy (parent poms) which are not referenced in the project's source files. This may not necessaryly mean that those dependencies should be removed, as they could be used by other projects. However, it can be a good idea to look at them. Referenced transitive dependenciesNext are the classes that are referenced but which are provided by a transitive dependency which is not directly depended on. That's a bad practice, that's why the section is here. Useless dependenciesThe last section displays the dependencies that are declared in the project's pom.xml file but which are not referenced in the java source code. Those dependencies should be looked at and one should decide whether to remove them or not, as there can be false positives. In the example, the Analysing dependencies... Documentation to be written ... Manipulating the pom graph... Other commands... Changing a GAV... Releasing... Other... Default scriptThere is a default script that can be executed when a new client connects. If a file called Default configurationIf a
Third party libraries using pom-explorer
Roadmap / Todo list
Questions the program should answer
Functionalities
Graph functionalities
Done
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论