Matt RaibleMatt Raible is a Java Champion and Developer Advocate at Okta.

The Angular Mini-Book The Angular Mini-Book is a guide to getting started with Angular. You'll learn how to develop a bare-bones application, test it, and deploy it. Then you'll move on to adding Bootstrap, Angular Material, continuous integration, and authentication.

Spring Boot is a popular framework for building REST APIs. You'll learn how to integrate Angular with Spring Boot and use security best practices like HTTPS and a content security policy.

For book updates, follow @angular_book on Twitter.

The JHipster Mini-Book The JHipster Mini-Book is a guide to getting started with hip technologies today: Angular, Bootstrap, and Spring Boot. All of these frameworks are wrapped up in an easy-to-use project called JHipster.

This book shows you how to build an app with JHipster, and guides you through the plethora of tools, techniques and options you can use. Furthermore, it explains the UI and API building blocks so you understand the underpinnings of your great application.

For book updates, follow @jhipster-book on Twitter.


Over 10 years ago, I wrote my first blog post. Since then, I've authored books, had kids, traveled the world, found Trish and blogged about it all.

Artifactory - a new Maven 2 Repository Manager for Enterprises

From the Maven 2 user list:

We would like to announce the immediate availability of Artifactory, a Maven 2 enterprise proxy.

Artifactory offers advanced proxying, caching and security facilities to answer the needs of a robust, reproducible and independent build environment using Maven 2. It uses a JSR-170 Java Content Repository (JCR) for storage, which makes it extremely easy to manage searchable metadata, and provide extended features such as security, transacted operations, auditing, locking, etc.

Artifactory is distributed under APLv2 at It is currently available as a downloadable archive, that can be run out of the box (with default settings). An install script to run it as a Linux service is also provided. A (limited) guest live demo is available at (username/password is guest/guest).

You are welcome to give it a go!


Yoav Landman,
The Artifactory Team

So how does this compare to Archiva, Proximity and Maven Proxy? One user writes (formatted for better reading):

My experience so far:
  • Archiva: Alpha; doesn't work (random webdav deployment failures), loads of bugs, low rate of progress. Feels dead.
  • Proximity: Works; slightly confusing (don't like the separation of metadata); lots of new releases constantly; hard to configure (hacking around with spring config files) - our install takes *forever* to restart.
  • m2proxy: simple, but simple.
Fingers crossed that artifactory hits the sweet spot...

It's interesting to see that Artifactory's UI is powered by Wicket and Dojo. The demo seems kind of sluggish, but I don't believe this application is meant to handle more than 10 users at a time. For more information on Artifactory's features, see its introduction page.

It's great to see a (seemingly) good tool come out for internal repository management.

I spent a couple days last week analyzing the best open source continuous integration server for Maven 2 projects. Hudson turned out to be the clear winner with the best UI and easiest setup. It also actually worked, which is a lot more than I can say for Continuum. While I did get Continuum to work, it required turning on anonymous SVN (no, putting the username/password in the URL did not work). CruiseControl worked as well, but required config.xml knowledge, which sometimes scares admins. Pulse and Bamboo continue to be the best commercial Maven 2 testers, while TeamCity failed my 10-minute test (twice!). One of the features I was looking for was Trac integration and that only exists for CruiseControl and Continuum.

It's amazing to see projects like Continuum and Archiva. If they're any reflection of the Maven team's ability to develop software, that's frightening. My advice: discontinue both of these projects as they're a waste of anyone's time to even research them.

Update October 2009: Fast forward a couple years and I take back what I said about the Maven's team ability to develop good software. Nexus is a kick-ass Repository Manager.

Posted in Java at Mar 05 2007, 07:35:00 AM MST 24 Comments

Ughh...The interface looks horrid. I guess that shouldn't be surprising coming from a wicket based app though... =p

Posted by Jesse Kuhnert on March 05, 2007 at 09:37 AM MST #

Yeah, it's quickly failing my 10 minute test too. I'd expect it to start populating itself as soon as I start it up (or after selecting "download" on a node), but it doesn't seem to be working.

Posted by Matt Raible on March 05, 2007 at 09:40 AM MST #

I'm using Proximity without many issues at all. It's fast, and reliable. If I had to come up with a couple of complaints they would be:

1) have to touch a few config files to add a mirror.
a) copy, paste and change in the proximityRepositories.xml for the new mirror.
b) add a list item in the applicationContext.xml so that proximity knows about the new mirror or repository.
c) add metadata dir and storage dir to

2) Upgrade to the current release candidate.
the documentation could be better. Whenever I get a new release candidate, I end up diffing the entire dir struct and going through a merge process (thank God for beyond compare).

I'll check out Archiva today to see how it compares. I fear that db storage for the artifacts will slow it down considerably. Proximity stores everything on the file system so nothing needs to be pulled out of any db before it's given to the requester.

Posted by rick marry on March 05, 2007 at 10:28 AM MST #

Jesse Kuhnert, committer of Tapestry, gives us the fabulous new insight that the choice of a widget framework is a primary factor in what an application ends up looking like.

Posted by Eelco Hillenius on March 05, 2007 at 10:29 AM MST #

Eelco: Yep, you're pretty much right in that point. If you can show me a similar looking app produced by a Tapestry user I'll believe your disbelief. .. Users of a framework are just as much a reflection on its ability as the rest of the standard factors..imho..

Posted by Jesse Kuhnert on March 05, 2007 at 11:13 AM MST #

Is Trac integration even an option if your SVN repository is svn:// or http:// ? Last I checked, Trac can only access a file:// repository

Posted by JR on March 05, 2007 at 11:42 AM MST #

Whatever rocks your boat Jesse.

Posted by Eelco Hillenius on March 05, 2007 at 12:05 PM MST #

Jesse, Do your mommy and daddy know that you're using the computer?

Posted by Nick Johnson on March 05, 2007 at 12:11 PM MST #

ROFL, that interface looks much better then :)

Posted by Anonymous Coward on March 05, 2007 at 12:13 PM MST #

Ah ...It is nice to see a comment "opinion" confirmed within the same set of comments. It makes proving points much easier that way. ;)

Posted by Jesse Kuhnert on March 05, 2007 at 12:15 PM MST #

Its sad to see that HLS lets kids work on tapestry these days. I liked the project much more when there were only serious developers working on it.

Posted by Anonymous Coward on March 05, 2007 at 12:20 PM MST #

I don't mind the banter back and forth, but I do mind posting anonymously. You've been warned. ;-)

Posted by Matt Raible on March 05, 2007 at 12:33 PM MST #

If you check Archiva svn log you'll see that not dead at all. I'm sure it has more activity than AppFuse ;) and it can handle more than 10 users too.

If you try any of the repository front ends against an ibiblio copy you'll see that it's not a trivial task.

Posted by Carlos Sanchez on March 05, 2007 at 04:02 PM MST #

I am a bit surprised at the strong anti-opinion of Continuum. I do use it and have had very few issues with it. Of course, I am running it in a closed shop running all Maven 2 builds. I might have missed out on some of the SCM integration fun that others have. Is this the major complaint? I'd be curious about more details on why continuum sucks. I would love to see them ditch plexus and give me a WAR though . . .

Posted by Dave Brown on March 05, 2007 at 04:18 PM MST #

Hi Matt, How would you compare Bamboo to Hudson no matter it's commercial/oss ? Thanks.

Posted by Sebastien Pouillet on March 07, 2007 at 12:20 AM MST #

Matt, thanks for the pointers:

"It's amazing to see projects like Continuum and Archiva. If they're any reflection of the Maven team's ability to develop software, that's frightening. My advice: discontinue both of these projects as they're a waste of anyone's time to even research them."

I second this sentiment. Lot's of this mess has to do with the fact that the Maven team seems to be stuck on a set of isolated technologies. *Everything* is plexus, and I'm sorry but basing something like Continuum on this arcane server platform born of Turbine is a mistake.

Archiva is also something of a disaster. Actually, err, Maven is something of a disaster.

Posted by Tim O'Brien on March 09, 2007 at 12:39 PM MST #

:-) Jesse Kuhnert continues to discredit Tapestry with every inane response to blog entries like this.

Posted by Tim O'Brien on March 09, 2007 at 12:41 PM MST #

Timmy: Yes, it's true I'm a committer on Tapestry....but to be fair you should list the other projects who's names I'm smearing by my comments. (even if they do only discredit me with people who are already Wicket users, like yourself ;) ) :

  • Dojo (i think wicket people have probably heard of it)
  • OGNL (i think you've heard of this as well, you guys removed it for a sort of limiting home grown solution - whereas I "just fixed it" )
  • TestNG - admittedly not very much done here by me

Sounds like a formula for disaster to me. Certainly not the kind of stuff that would make a good mix for web development.

p.s. What is it that you do exactly, other than occasionally write boring articles for oreilly?

Posted by Jesse Kuhnert on March 10, 2007 at 11:15 PM MST #

I've just installed Artifactory but I can't for the life of me find out how the URL is configured so that a maven client can download from it. I would have assumed that it would be something like http://host:port/artifactory/repo as suggested in the documentation, but this URL ends in a 404 from jetty. Does anybody have a sample config file for Artifactory that illustrates this?

Posted by Ben Hood on March 15, 2007 at 10:31 AM MDT #

Thanks for trying Artifactory, For the URL you are right but it is to be used only in repository declaration of maven. The queries from browsers are not answered (list of files and so on). To browse the repositories from a browser, use http://host:port/artifactory/ and the "browse the repository" menu. This behavior relates to the 10 users max comments of Matt Raible, by the way. Artifactory is optimized for maven queries (proven in production for hundreds of developers asking for artifacts via maven), and not for the Web UI (management tasks). Anyway, for any questions on Artifactory please use the user mailing list:

Posted by Fred Simon on March 16, 2007 at 12:29 PM MDT #

Hey Matt. artifactory isn't a mirror so you won't see it populating itself after start up. It merely caches the artifacts you ask it for. I've set it up here at the new gig and it's been great. The UI does look like smashed ass, though. But unlike other people here, I hardly think that's a reflection on Wicket itself. That'd be like saying all Tapestry users are pompous pricks because of the comments of one particular developer.

Posted by Justin Lee on June 28, 2007 at 09:46 AM MDT #

I am also trying the Artifactory. I have an issue. Our application will build 1 war file. However, there is another externally built war file using Ant, which needs to go in the artifactory repository. When our application is deployed, this war also should be copied over to Tomcat/Webapps directory. 1) How do I upload anything except a war in Artifactory as an artefact? via UI it is not possible? Is there any other way? 2) In my projects pom file can I put in stuff to copy it to the Tomcat/Webapps folder? Thanks, Harshad.

Posted by Harshad on July 25, 2007 at 10:44 AM MDT #

I've created a new dev environment just then using Buildix (subversion, trac, cruisecontrol), Maven2 and Artifactory successfully. I also integrate the dev env with subversive/maven2 eclipse plugin. Everythings are surprisingly simple to configure and work perfectly. Since tomcat5 is already installed by Buildix, all I need to do is deploy artifactory.war into the webapps directory and added a line in ....
Merit to Thoughtworks to create such a great tool. All I need to dio is just running the create_project script and It will automatically create the subversion standard layout for me as well as updating the config.xml in cruisecontrol. After create the blank project, I use the maven2 plugin and create a maven project in eclipse, finally, all I need to do is checkin my project into the Trunk........ Damn Simple.
Of course, everytime I checkin my codes, cruisecontrol will be trigger (build, junit tests,etc). If it builds successfully, it will upload the jar file to artifactory automatically.
Let me know if anyone is interested in more details, I can blog it ..

Posted by Nathan Ma on August 30, 2007 at 03:18 AM MDT #


If it's not too much trouble or too "out of scope" at the moment, I'd like to hear if your opinions on Continuum and Archiva have changed since the time of writing this entry?

I am using Continuum and it works just fine for me. If I'm not completely mistaken, I'm giving it a username and password for SVN and it seems to work.

Regarding Archiva, I really want it to work, but after playing with it for a couple of hours, it seems a bit too random to me. Artifacts show up in the "browse" page randomly, which to me indicates that if they are not there, they are not being proxied at all, even if I mirror "*" in my settings.xml.

Anyway, if there's an update to your post, I'd love to hear it!


Posted by Viktor Nordling on March 04, 2008 at 03:24 AM MST #

Post a Comment:
  • HTML Syntax: Allowed