Introducing the Alfresco Artifacts Repository – yes, with Alfresco Enterprise :)

Native American Artifacts
Native American Artifacts

It’s my honor – and a a huge personal satisfaction after a few years working on this – to announce the full availability and support of the Alfresco Artifacts Repository, a fully fledged Maven repository hosting the major Alfresco releases and of its flourishing projects ecosystem, both for the Alfresco Community and Enterprise Networks.

For those of you already following this blog this might be no big news, as somehow the information was already around in the Alfresco-sphere and an Alfresco Maven repository has been already unofficially (AKA maintained by me) around for a while. But the great news is that now the repository is officially maintained and artifacts are kept up to date 🙂

Based on the Nexus OSS mature Artifact Repository technology, and following a few weeks Partner only beta, the repository is now publicly available at:

http://artifacts.alfresco.com (formerly http://maven.alfresco.com)
The Alfresco Artifact Repository
The Alfresco Artifact Repository

What can you find in there (AKA the screenshot is not enough)? Very well, at the moment the Artifact Repository hosts:

  1. Alfresco Community full releases (JARs/WARs) identified with the groupId org.alfresco
  2. NEW: Alfresco Enterprise full releases identified with the groupId org.alfresco.enterprise
  3. NEW: Alfresco Hotfix full releases identified with the groupId org.alfresco.enterprise
  4. Activiti (BPMN 2.0 implementation) Releases and Snapshots
  5. All the versions of the open source Maven Alfresco Lifecycle, a long term but quickly growing Maven SDK approach to Alfresco development
  6. All Spring repository proxies, to ease Spring Surf development by only referring to this repository developing Surf

NOTE: At the moment no POM files / dependency declarations are available, but if you are interested please feel free to vote on this issue 🙂

Still not sure about the potential? Well, let me just give you an idea:

Read more Introducing the Alfresco Artifacts Repository – yes, with Alfresco Enterprise 🙂

What’s going on with Maven and Alfresco ? (WIP)

Just in case you were wondering, this is the time things are actually happening.

If you are working or willing to work on Alfresco ECM platform with Maven, you better stay tuned and keep your patience for a few weeks more.

Why?

Well for a few interesting reasons:

*  The Maven Alfresco Community is growing and every day there is more activity in the lists and on the code contributions side. If you need information around Maven and Alfresco, the Maven Alfresco discussion group is the place to be.

* Alfresco is integrating Maven artifacts deployment in its build process (see issue): we are literally days away from having 3.4 and 4.0 Community and Enterprise versions available on the Alfresco Artifacts Repository. BTW, bear with us in these days as some changes might be undergoing in the repositories. This is great news for all of you who are hosting corporate repositories (especially for Alfresco Enterprise) as this way you will just have to point to maven.alfresco.com to retrieve Alfresco artifacts

* We are working actively (kudos to Mau) on a clean, neat, supportable version of the Maven Alfresco Lifecycle project: if you check out the experimental branch you’ll find a nicely merged, lean, fully functional set of parent POMs and archetypes to allow you, for example, to run a full Alfresco Repository, Share, AMP, etc. as a single project embedded in Jetty and H2. Nice, ain’t it? Stay tuned there because we are aligning that to the automated deployment at point #2, so we’re just really weeks away from a nice, fully featured, extensible but above all standard open Maven Alfresco SDK.

As we do lots of progress on this area, your feedback is more than welcome and, once again, bear with us while we actively work to make your Maven Alfresco developer life easier.

Maven Alfresco Lifecycle 3.9.1 Released

Hey guys,

I’m proud to announce that thanks to a vigorous Community help (special mentions and kudos to Mao and Stijnr for the great help in the last period), we have been able to pull out the 3.9.1 release of the Maven Alfresco LIfecycle.

Multiple bug-fixes, a zero defect targeted release and a couple of juicy new features like:

make of this one probably the most stable and tested release of the Maven Alfresco Lifecycle. The release is tested against Alfresco 4.0b Community, and it’s the perfect foundation to the great work we are going to do in the next weeks to clean it up completely and support Alfresco Enterprise.

The releases is available in the Maven Alfresco Repository (in case you are wondering, I still need to update the archetype-catalog.xml, but that will happen just after Easter, as I have no permissions right now 🙁 ). Full release notes are also published on the Google Code project and per component documentation is available in the brand new published Maven Site (using the HUGELY COOL Maven Fluido Skin).

Feedback is always welcome in the Maven Alfresco List and we also have a Skype chat so feel free to contact me on Skype if you want to contribute / participate in any way 🙂

Have fun and let us know what you think!

Alfresco DevCon Presentations

A bit late, but for those of you following this blog who did not join either the San Diego or the London Alfresco DevCon, here are my 3 presos I gave in both conferences available in Share:

Turnout was great and the event was wonderfully mastered by our beloved Chief Community Officer: regarding my presos, I found a very good general interested public on my Maven + Alfresco Application Lifecycle preso, as the Slideshare searchbox top suggestions seem to confirm 🙂

Alfresco DevCon and Maven top search in Slideshare :) A couple of other presentations were using Maven and I even heard our mighty VP of Engineering mentioning the magic 7-six lettered word a couple of times in the Engineering QA panel.

New challenges in scalability and complex application management are to be expected with the so long awaited Alfresco 4.x version (BTW, don’t forget to join the 4.o EE launch parties 🙂

So I think we can expect more VERY juicy news VERY soon in scalability and Maven…once again, stay posted 🙂

Boost your Maven build with best practices

Today I’m approaching the Spring Surf RC2 release and one of the major thing that has been bothering me (and definitely the other devs) has been the slowness and instability of the Maven build.

Recurring issues like:

  • Huge overhead in repository snapshot artifact lookups
  • Multimodule useless plugin invocations
  • Build randomly failing on the build server
  • Release unnecessary complex

In this sense, as Maven has always been my boy, today I decided, prior to the RC2 release, to try and improve performances and stability of the build to a good extent before proceeding with release: in this sense, as I often suggest, a Maven project is somehow like a very sweet but complicated woman, who really need some Tender, Love & Care before actually being able to release all its potential.

And as I believe that, in the infinite hate & love between software writers and software users/configurators, Maven design has too many times blamed for circumstances that actually are fully under the control of the configurator (e.g. the dev who writes the Maven POM), while I go trough this Maven refactoring I dediced to share my experience and achievements with you, to actually try and somehow give Ceasar what belongs to Ceasar.

Read more Boost your Maven build with best practices

[HOWTO] Build your JAR Alfresco Share Dashlet with Maven in 3 minutes

Two months without a post, and I come back again with Maven and Alfresco? Well, no news as the Maven Alfresco Community keeps growing..

So following the exciting news on Spring Surf and Share announced by Kev on trunk, for which since Alfresco 3.3 (now in trunk) we can now build Alfresco Share Extensions as plain old JARs, I decided to complete the Maven Alfresco Lifecycle with another archetype, providing a simple way and sample code allowing to build Maven2 Alfresco Share Extensions in minutes.

I’m sure this is going to interest the Alfresco community, same as it’s Ant counterpart build script which Will’s recently produced to accomplish the same task. The more, the merrier isn’t it? The big difference between that approach and the one we’re presenting is only that Maven enforce a standard project layout so it was fairly easy to put stuff to be packaged in the proper place.

This also comes as a very natural complement to the Maven Alfresco Share Extension Archetype (managing WAR customized builds for Share) for now it’s possible to build a Share WAR and have it depend on Share JAR modules. Great kudos go to colleague and mate Will Abson and Alfresco Engineers for having produced and nurtured the Site Tags Dashlet which is included in this archetype and that you can install following the next steps in a couple of minutes.

Couple of pre-requisites for running this:

  • Alfresco Repository WAR 3.3 (TRUNK) already running on Tomcat. You can build this from trunk and run it in your tomcat instance, or find it deployed in the Maven Alfresco Community Repository
  • Tomcat Manager already installed and using credentials “admin” with no password (config in conf/tomcat-users.xml)
  •  (optionally) m2Eclipse eclipse plugin to import Maven project (not needed but cool 🙂 )

Ready, set, go: Read more [HOWTO] Build your JAR Alfresco Share Dashlet with Maven in 3 minutes

An archetype for Alfresco Share in the new Maven Alfresco Lifecycle release

As promised, just a brief heads up on the quite few changes ongoing in the Maven Alfresco Lifecycle project which is now supported by the Alfresco Community Maven repository.  Also I managed to pull out a new version of the Cmis Maven toolkit against the new repository.

Proceeding with order, first of all, I released today a new version (1.1.0) of the maven-alfresco-lifecycle package with the main interesting news (full changes report):

The long Maven Alfresco marathon was then completed by the release of version 1.0-beta-2 of the CMIS 1.0cd04 Maven Toolkit, pointing to the new Maven repository. No actual functionality was modified and it keeps on working happily (by default against http://cmis.alfresco.com) using the latest snapshots from the Chemistry AtomPub TCK trunk. I updated the documentation on the Alfresco wiki as well.

I hope this really helps as it’s just *not that* funny to go over those growing many documentation files to change repos again, so any edit or error you guys can spot in the docs === a beer on me when you seem me 🙂

Though I first have to apologize to the end users of this build, promising this is the last time this project moves hosting.
Now everything is consolidated, content as artifacts, as in the pure ECM spirit. And with a promising Share archetype to work and customize it productively.

Eager to hear your feedback (curious about the Share archetype), and especially at my Tech Talk on Maven and Alfresco

…don’t be shy 🙂

Dreams come true … launching the Alfresco Community Maven Repository :)

Busy days busy days, busy but definitely happy days 😉

after working a lot on the CMIS 1.0 Webinar (recording out soon) and having made my first official commit for Apache, I saw an unexpected but never so welcome outstanding speedup of one of the processes that I’ve been pushing in the Alfresco Community for about 3 years now.

I’m proudly announcing the institution of an Alfresco hosted Maven Repository, capable of consolidating and bring the Maven Alfresco Community to the next level. Hosting a repository (for Community artifacts only for now) means a great step towards a even more mature open source community which works against high standards of quality and automation.

I’ll be discussing and demoing this and other Maven Alfresco related topics in next Friday’s Alfresco Tech Talk Live. You’ll find more info on the Alfresco wiki.

For now, here’s a screenshot of our new shiny Sonatype Nexus 1.4.0 instance, which will allow a proper consolidation still scale-out for our community by the means of repositories proxying and Alfresco Community artifacts hosting. Kudos to everyone that made this happen 🙂

Alfresco Maven Repository

This is is a big step for the community which is growing around projects like the Maven Alfresco Lifecycle  and the small CMIS 1.0 Maven toolkit which I built for my recent training engagements.

In addition to that,  the mighty great news about the Alfresco SURF and Alfresco Webscripts project now being contributed to the Spring Framework under the newly born Spring Surf Extension (follow our work here), all of which is powered by Maven gives even a more central role to this technology in the company I work for.  Great job guys and thanks for giving me the opportunity to participate in this!

This is such a nice moment for me which I pushed for this since a long time, when I was still working for Sourcesense. And a special thanks must go to them for having first allowed me to work on a Maven Alfresco suite in the past and for having supported it with their Nexus instance, until we introduced an Alfresco Maven repo. Most content is now migrated so you can safely use the new repo in your POMs.

I’m still in the process of migrating (tomorrow should be done) all the apps to the new repo, so expect changes in the docs. I’ll keep you posted with the coming changes and news.

Also, please provide your feedback on this event so we can offer the best service around this important open source Application Lifecycle Management technology.

Maven Alfresco Lifecycle to gather all Maven Alfresco components

Few Build Successful’s were more satifsactory then the one which you can see in the window below 😉

Maven Alfresco Lifecycle build successful

Finally all the modules that I’ve been working together with the community, including AMP & Alfresco Extension Maven archetypes and the AMP plugin, under one single build, control and with a proper release process, called (almost obviously) Maven Alfresco Lifecycle featuring:

It was time to wrap up all this work (merging m2Alfresco, maven4Alfresco and other Maven Alfresco related activities) in a more usable and sustainable platform for growing it.

As usual, many thanks go to Mao that provided 1st class infrastructure support (and much more 🙂 on the new Nexus Sourcesense repository.

And this being a double advantage, not only for the community but for the growing number of enterprise customers interested in working with Maven on Alfresco.
I would like now to grow it with features already present in some development branches and exciting new improvements like:

  • Alfresco Share archetype support (already in 3.x branches)
  • SURF / Spring tool suite integration (as Uzi shown us so to be so cool with the new spring-surf)
  • Update and improve the quality of the sample contexts to match the latest and greatest capabilities

As said, I see the interest of the community at large around the project is growing so in case you’re interested I suggest you to participate by joining the lists or opening issues.

So just give it a try…it’s two Maven commands away 😉

Would love to hear your thoughts on how to improve the platform and grow it to the next (enterprise) level. Don’t forget to check out the 3.1.0-stripped branch, where a Maven Calm based version is hosted and there’s already a working Alfresco Share sample project.

Have fun!

A Maven based CMIS Tck to contribute in Apache Chemistry

My first real involvement in Chemistry definitely deserves a first post on the subject 😉

Lately I’ve been involved into refactoring the Alfresco CMIS Test Harness into an external Tck (Test Compatibility Kit) module to contribute to the Apache Chemistry. At the moment it’s mostly focused on the AtomPub part (including an Apache Adbera extension), but being based on Apache Maven standards should be fairly easy to scale out to WebServices binding testing.

This would be this first real contribution from Alfresco to the Chemistry project, where me and David Caruana have the luck of being involved as committers. At the moment the code for the will-be-called chemistry-atompub-tck is still hosted under the Alfresco contrib SVN space as still to be completed, but already offering quite some nice functionalities to test the compatibility of your server to the CMIS 0.6.2 standard.

The code (which was already in Alfresco and kept up to date to the CMIS standard directly by David) is now almost ready for contribution as it’s completely decoupled from Alfresco and uses a standard Maven build process (Junit + Surefire) to run compatibility tests against an existing (and running) CMIS server.

So, running a plain :

mvn test

will run all Junit tests against the specified serviceUrl with specified the username and password, using Maven POM properties as configuration mechanism. Additional configuration can be done in the POM to trace HTTP request/response conversation (useful for debugging purposes), and to configure some behaviors of the HTTP client.

In addition to that, due to the mighty Maven power a small addition to the previous command:

mvn test site:run

will allow you to point to anembedded Jetty server which publishes the test reports and shows errors and exceptions (amongst all the other nice Maven site features).

The idea at the base of this contribution is that this TCK can be used to test virtually any CMIS implementation and Maven profiles provide us a nice way to aggregate the full test fixture and publish the result in a nicely aggregated fashion. In fact, I started defining a profile called ‘alfresco’ which once run with:

mvn test -Palfresco

will configure the TCK to run against an Alfresco provided CMIS reference URL (or to do any Alfresco specific pre-requisite steps, like downloading it, installing a custom model and run it in Jetty for self contained testing).

In the same way I’d like all the other open source vendors involved in Chemistry to maintain their own profile which will serve as community reference for the CMIS readiness of a specific platform. Likewise we could setup ‘sharepoint’ or ‘documentum’ profiles to test existing public instances of those CMIS implementors, to always be up to date with their state of the art.

This will, of course, make much more sense once integrated in Chemistry but it’s already fully functional against the CMIS 0.6.2 standard and might be worth a try already. And if you feel to participate to the testing game, why don’t you make a CMIS server instance available and contribute the few lines of POM configuration to the project, filing a nice and easy JIRA issue?

Too much of a salesguy ? 🙂