The pain of managing libraries/dependencies differently between the build server and individual workstations combined with differences by application has been a large burden. I finally got around to starting to do something about it.
I started with the Apache Archiva 1.4m3 & m4 versions. I picked these versions since they are architecturally closer to what I am aiming to support in our environment versus the 1.3.x versions. The main issue I ran into was with getting the software working with our active directory. It may be an issue with my configuration but there was a lack of documentation to help me past the problem (NPE while getting information regarding the user). The default logging and error message was not helpful. I threw in the towel after about 4 hours on the AD issue. My general impression of Archiva is that it has plenty of potential but is not quite polished enough for our environment.
My next attempt was with Artifactory 3.0.1. I was able to get this up and running in about 30-45 minutes. It worked with our AD after comparing configuration with a few samples on the internet and the documentation. I was able to very quickly import an existing Maven repo and get a virtual repo setup to front our internal resources and all external repos.
Currently we use Ant with some Maven tasks to manage dependencies in our Jenkins builds while the source tree includes unmanaged baseline libs used during workstation builds. My overall goal is to use Maven to manage dependencies for both Jenkins and workstation builds. I may not commit to Maven driving the builds but managing dependencies is a big help.
Next I waned to test whether I could successfully get Eclipse/Maven/Artifactory to work nicely together. I had tried to get Eclipse/Maven working together in the past but had poor success (involved Subversion as well). In this instance I started simpler by creating an Eclipse dynamic web project which was not under source control. I converted it to a Maven project. I also installed Maven 3.0.5 on my laptop and configured the Eclipse/Maven integration to use it. I modified the settings.xml file to only use our remote Artifactory instance. After a number of attempts with mixed results I was finally able to determine that dependencies I added were resolved from Artifactory. My only complaint with the Maven integration is that I could never get the Artifactory repo instance to expand and list the contents like it would for the Maven Central repo. This caused me to believe it was not working for several hours but when I cleared my local repo and configured Eclipse/Maven to cache/index stuff at startup it did pull in the dependencies I had added. I lost a few hours of life I won't reclaim because of that issue. If we were not using a secured Artifactory instance, I have a feeling it would have been much more straight forward. There was not a lot of nice clear documentation or user blogs with pertinent information with regard to using a password project installation combined with Eclipse/Maven. In the end, it appears to work for shell of a project.
So far, I really like Artifactory. It is very easy to setup and pretty easy to use and has reasonable features in the open source release. It may bug me later that a number of features are sort of visible but unusable unless you pay. I'm not much for having carrots dangled all over the place.
Next I will be trying to get it working with an existing
project in Subversion. Will update this with those results once get
around to trying it.
No comments:
Post a Comment