Pathfinder project

Welcome to AroundTheCode Pathfinder project homepage.

What is Pathfinder?

Pathfinder is a CI tools which aims to help developers and release manager to monitor a whole organization development ecosystem by tracking single component relationship and dependencies.

If you are working in a big company, or simply to a big software project you will surly have to deal with tons of dependencies, many of them will be classical “third parties” libraries you are using, but a good part of them will be part of your project and you will have to move carefully among them, like an elephant in a crystal shop, to be sure that your awesome new feature doesn’t break anyone else code, somewhere else in the company.

Modifying an API library can be extremely simple, but avoid regression over all projects which are including it (many of them you are probably not even aware of) surely it’s not.

Maven and other dependency management tools can somehow help you, but usually their “no-panic zone” ends with the boundaries of your own project leaving you alone with your towel, facing all other developer blaming you that “your code mess up all their project”.

How Pathfinder works

Pathfinder analyzes your projects dependencies and store them as a relational graph.

Dependencies coming from different project are merged together to from a unique relation ecosystem to be analyzed.

Patterns are then extracted to retrieve only information relevant to the project you are working on and its impact on other projects into the graph.

Full dependencies graph

Impact path

Impact Path section will help you identify all dependencies involved when you are modifying a release artifact.

When you are working on very complex projects, just modifying one library may have several impact on other project which include it as a dependency.

pathfinder-ui-impact

Dependency management

Pathfinder can gather all projects ecosystem dependencies and show you a detailed report.

All dependencies shown their artifactId/groupId/Version/Classifier and which project is importing them with given scope.

Version collision detection

Pathfinder maven plugin

It’s the simplest way to connect pathfinder to your CI chain, simply declare the pathfinder-maven-plugin goal and have all your project informations pushed to the pathfinder server.

mvn org.aroundthecode.pathfinder:pathfinder-maven-plugin:0.1.0-SNAPSHOT:store-tree
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building Pathfinder REST Client  - org.aroundthecode.pathfinder:pathfinder-rest-client:jar 0.1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- pathfinder-maven-plugin:0.1.0-SNAPSHOT:store-tree (default-cli) @ pathfinder-rest-client ---
testing connection [http://localhost:8080/]...OK
[INFO] Project is:[org.aroundthecode.pathfinder:pathfinder-rest-client:jar:0.1.0-SNAPSHOT]
[INFO] Parent project is:[org.aroundthecode.pathfinder:pathfinder:pom::0.1.0-SNAPSHOT]
[INFO] org.aroundthecode.pathfinder:pathfinder-rest-client:jar::0.1.0-SNAPSHOT --(compile)--> com.googlecode.json-simple:json-simple:jar::1.1.1
[INFO] org.aroundthecode.pathfinder:pathfinder-rest-client:jar::0.1.0-SNAPSHOT --(compile)--> org.apache.logging.log4j:log4j-api:jar::2.5
[INFO] org.aroundthecode.pathfinder:pathfinder-rest-client:jar::0.1.0-SNAPSHOT --(compile)--> org.apache.logging.log4j:log4j-core:jar::2.5
[INFO] org.aroundthecode.pathfinder:pathfinder-rest-client:jar::0.1.0-SNAPSHOT --(test)--> junit:junit:jar::4.12
[INFO] junit:junit:jar::4.12 --(test)--> org.hamcrest:hamcrest-core:jar::1.3
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.242 s
[INFO] Finished at: 2016-01-03T23:50:53+01:00
[INFO] Final Memory: 12M/245M
[INFO] ------------------------------------------------------------------------

Artifact crawling

If you want to use Pathfinder outside your CI analysis, you can populate graph data with a PULL approach instead of a PUSH one.

Simply open artifact crawler dialog and fill in desired artifac details, pathfinder will connect to your server maven repository and retrieve all the information for you in background.

pathfinder-graphcrawler-doubleclick

Pathfinder resources

If you are interested in the tools or want to get involved in the project here are the main references: