So here am I, in San Francisco. The weather is so much better than in Paris ! It's awesome !

I'll be speaking (tomorrow and tuesday) presenting "Flex For Java Architects".

I'm looking forward to it ! I'm pretty excited ! So if you attend my talk, please don't hesitate, send me feedback !

Creative Commons License
sous contrat Creative Commons.


A quick announcement to let you know that Fna's Maven archetype repository set is getting bigger. Check out the new Fna project documentation page.

Here is our current list of archetypes:

  • blazeds-autowired-spring-hibernate-archetype
  • flex-cairngorm-stubbed-crud-archetype
  • flex-cairngorm-flexunit-archetype

And there are more to come

  • a AIR localized maven archetype
  • a Flex LCDS maven archetype
  • ...

Note that most of the new flex project archetypes make use of Cairngorm and FlexUnit.

The most complex archetype is blazeds-autowired-spring-hibernate-archetype that I and Eric Garza will present at MAX San Francisco : "Flex for Java Architects".

Blazeds-autowired-spring-hibernate-archetype helps you generate a multi-module maven project : a flex front-end application communicating with the backend through Adobe's BlazeDS and a spring autowired service. The back-end relies on a spring hibernate architecture.

PS: Xavier, who helped me out on Fna is also presenting at MAX : "How to build collaborative applications with LCDS".

Creative Commons License
sous contrat Creative Commons.


Fna is building up.

Fna is a French Adobe consulting open source initiative/project developed to eliminate the ramp-up time found when building new RIA applications.

Fna will be a set of project skeletons, and maven archetypes.

Today Fna contains a few maven archetypes, the first releases are :
  • a Flex BlazeDS XDoclet Spring Hibernate Archetype :
    • The newest version is based on the latest flex-mojos maven plugin (2.0-alpha3) and the latest maven archetype plugins (2.0-alpha-3, as well) which made possible a lot of enhancements.
  • a Flex cairngorm flexunit archetype (Warning: work in progress)
  • a Flex library (swc) archetype (Warning: work in progress)
Enjoy and as Steven would say "share the love" !
Creative Commons License
sous contrat Creative Commons.


ADOBE a annoncé aujourd'hui son partenariat avec Yahoo et Google afin d'optimiser l'indexation des contenus flash. Cette annonce rend mon dernier billet en partie obsolète. Les moteurs de recherche de Google et bientôt de Yahoo seront en effet capables d'interagir (cliquer sur les boutons, les menus, ...) avec vos applications flashs et ainsi d'indexer leur contenu

search.jpg

Vous n'avez rien à faire… Enfin rien à faire pour que le contenu de votre site/flash soit indexé. Mais attention toutefois:

  • car pour le moment :
    • les images ne sont pas indexées,
    • les fichiers swf, html, xml dynamiquement chargés par l'application flash principale seront indéxés séparemment,
    • quelques problèmes subsistent pour les textes hébreux et arabes,
    • les problèmes inérants au javascript ne disparaissent pas: si votre flash est chargé par du code javascript non exécutable par google/yahoo...
Mais surtout, cette avancée technologique ne vous soulage pas du travail que vous aurez toujours à faire dans la gestion des URLs pour garantir une bonne navigabilité dans votre RIA. Si l'utilisateur final ne peut pas "bookmarké" les écrans de votre application, les moteurs de recherche ne le pourront pas plus. Ainsi, si un utilisateur arrive sur votre RIA à la suite d'une recherche fine et pointue sur une sujet précis et qu'il arrive sur la page d'accueil de votre site et qu'il doivent fouiller, cliquer 30 boutons et autant de sous menus avant d'arriver à l'"écran" indexé par Google, cet écran, ce contenu qu'il recherchait. C'est presque contre productif : c'est une mauvaise expérience utilisateur.

La gestion des URLs et du deeplinking reste dont primordiale (cf. mon dernier billet).

Par contre aujourd'hui a priori plus besoin de faire de site html mirroir ou d'exposer les données en premier. Cette dernière technique reste cependant très au point grâce notamment au travail de Ted Patrick et à des initiatives comme celle de space150 et leur approche Faust: Flash Augmenting Standards

faust-layers-diagram.jpg

Ces techniques garantissent une meilleure accessibilité et une indexation de TOUS les moteurs de recherche (exalead par exemple pour citer un petit français)

Références:

Images:
Creative Commons License
sous contrat Creative Commons.


Aurélien m'apprend ce soir que

la nouvelle barre d’url de firefox 3 indexe les urls et les titres des pages récemment visitées.

Encore une nouvelle preuve de l'importance d'une bonne gestion des d'URLs dans un portail grand publique ou un site de commerce qui souhaite être finement et pertinemment référencés.

myrurl.jpg

Les RIA connaissent une véritable expansion, et l'un des problèmes liés à ce changement est le référencement. Dans certains cas, l'excellente ergonomie du site peut compenser l'absence de référencement dans les favoris et d'indexation par les moteurs de recherche.

Mais c'est une question qui revient souvent aux connaisseurs et acteurs de ce domaine : comment obtenir un bon référencement avec des technologies RIA (Ajax, Flash, Silverlight, etc.), alors que les grands moteurs de recherche ne peuvent pas facilement indexer leur contenu ? Les robots web ont en effet du mal à repérer les liens et le texte uniquement incorporés dans l'animation Flash De la même manière, comment indexer correctement une application Ajax qui "injecte" du code HTML dynamiquement ?

Dans le cas du Flash, certains sites web entièrement créés dans Flash utilisent une seule page web avec animation Flash incorporée. Lorsque les utilisateurs interagissent avec le site, ce dernier affiche de nouvelles vues dans l'animation Flash au lieu de charger une nouvelle page web.

Il existe des solutions de rechanges, plus ou moins complexes et efficaces selon les technologies et les méthodes mises en place

Un site HTML mirroir

miroirs.jpg

L'idéal (mais aussi le plus couteux) dans un souci d'accessibilité et de référencement est de créer un double HTML, permettant aux moteurs de recherche d'indexer le contenu de la page : cette dernière pouvant ensuite, via un Javascript, vous rediriger automatiquement vers l'animation Flash si nécessaire.

La meilleure façon d’apposer une sur-couche Flash sur un site HTML est d’utiliser JavaScript ou un système de détection de Flash comme SWObject. Cette technique permet aux utilisateurs qui ne disposent pas du lecteur Flash de naviguer sur l’ensemble du site.

SWFObject est en effet un petit script Javascript utilisé pour inclure un contenu swf dans une page HTML. Le script peut détecter le plug-in Flash dans tous les principaux navigateurs (sur MAC et PC) et est conçu pour rendre l’intégration des swf aussi simple que possible. L’intégration dans la page est très propre il peut être employé dans les documents valides HTML et XHTML 1.0.*.

Les fichiers Flash sont référencés

Google (tout comme d’autres moteurs de recherche) indexe les fichiers .swf (Flash). Google sait indexer les libellés présents dans les fichiers swf, mais uniquement ceux statiques (non chargés dynamiquement). En sachant cela et en se concentrant sur des mots clés dans les applications riches créées, il est donc possible de bien indexer ces applications Flash (et donc Flex). Mais ce n'est évidemment qu'une solution de remplacement. Pour obtenir un bon référencement pour une application Flash, il est également possible d'associer des mots clés dans un swf embarqué via les flash vars, inclues dans l'appel à l'objet swf. Ces mots décrivent, à l'image des balises meta en HTML, le contenu de la page (en l'occurence de l'application). Lais il n'est pas envisageable d'effectuer un affinage des données meta sur toutes les vues de l'application Flash. Mais ce problème est aujourd’hui résolu avec la fonctionnalité appelée Deep Linking

Flex et le deeplinking : une gestion fine des URLs

Cette fonctionnalité permet de créer des points d'entrée dans votre application, qui deviendront accessibles de l'extérieur directement, même si ces points font partie d'une même application. Dans le cas d'une suite bureautique, on pourrait donc imaginer les points d'entrée suivants dans une seule application. En synchronisant systématiquement l’état d’une application Flex avec son URL, il est alors possible

  • à l’utilisateur de profiter de ses favoris,
  • aux robots d’indexer votre site.
  • aux webmaster d’analyser la fréquentation et l’utilisation de ses application flex.
| Bien que cela semble aisé, cela demande une bonne réflexion et un peu de travail. Il est alors possible d’avoir comme dans ces exemples (rééls) des URLs descriptifs d’un état, d’un espace de l’application : deeplinking.jpg

Cette philosophie se rapproche de l'architecture REST.

Remarque : Il est à noter que l’intégration de cette technique dans un portail dynamique et éventuellement aussi AJAX (et donc hors du cadre simple d’un template HTML Flex) est possible grâce à l’utilisation des composants open source SWFObject et SWFAddress.. SWFAddress facilite également l’intégration de module permettant l’analyse de fréquentation (comme Google Analytics).

Autre technique efficace: exposer les données en premier

Une autre technique qui se prête particulièrement au site aux données publiques est celle qui consiste à exposer les données « en premier » aux navigateurs et donc aux robots :

google.jpg

Cette technique est démontré dans Flex Directory qui est sans doute l’application Flex la plus « amicale » pour les moteurs de recherche.

Cette méthode, sans cesse affinée par Ted Patrick, ingénieur chez Adobe s’appuit sur le support XSL des navigateurs, sur leur capacité à transformer le XML (et donc le XHTML). Ted présente donc aux navigateurs (et donc aux robots) une page HTML simple ne contenant que les données : aucun swf n’est déclaré, celui-ci est « injecté » par transformation XSL. Le moteur de recherche peut alors indexer l’ensemble des données utilisées par l’application Flash. Dans le cas de l’application de Ted, cette technique s’est avérée redoutable : les partenaires d’Adobe qui sont présents dans cette application annuaire Flex jouissent ainsi d’une très grande visibilité sur internet (très bien référencé).

Quelques références:

Photos:
Creative Commons License
sous contrat Creative Commons.


I started working on a personal project during the week-ends lately.

Here is the result I'm happy to share with the world :
A great new blazeDS Xdoclet Spring Hibernate Maven Archetype:


Try it out ! Add my maven repository to your repositories list in your maven configuration file, in 3 maven command lines, you'll have a build a full professional multi-module flex blazeds spring hibernate CRUD application running on jetty (thanks to maven and xdoclet).

This CRUD application was "inspired" from a great article made by Sébastien Arbogast
Thanks Sebastien !

The flex stuff is compiled and packaged through Flex Mojos.
Thanks Velo !

Creative Commons License
sous contrat Creative Commons.


L'équipe de QSOS vient de sortir une nouvelle série d'évaluations qui adresse la grande problématique du moment: Choisir son ESB.

Voici le radar produit par qsos (sans pondération):

N'hésitez pas à commenter, critiquer, améliorer non seulement la grille d'évaluation mais aussi les fiches respectives de Mule, JBossESB et ServiceMix, ou même encore proposer une nouvelle évaluation d'un projet ESB open source concurrent

Creative Commons License
sous contrat Creative Commons.


Lost of maven repositories are available out there in the cloud. When you're looking for artifacts http://www.mvnrepository.com/ is a great place to start.
You may even find Adobe blazeDS jars referenced there. But they were not deployed there by Adobe, and they are not what I expected them to be.
Their version number is wrong, and to me the naming and groupId as well.

It's too bad Adobe (just like many other proprietary software editors) does not systematically provide maven repository.
. Lots of people are asking Adobe for maven support :

So to help you and me out. Here are a few ant scripts I developed yesterday to automatize and ease the creation of local and remote repository from a set of libraries.
  • first a script of reusable ant targets to ease the construction of local and remote maven repositories : maven-repository-construction-calls.xml
  • then an ant script to deploy all livecycle client sdk jars into maven repository : create-LC-ES-maven-repo.xml
  • and finally another ant script that target blazeds

maven repository construction calls from an ANT file


This maven-repository-construction-calls.xml ANT file of mine is the base of my maven Adobe repository creation.
What it does is calling "mvn install:install-file" and "mvn deploy:deploy-file" through the exec ant Task.

I also develop a target called "maven-all-artifacts-in-dir", which iterates on all the jars in a ${jar.directory}
to call maven install or maven deploy on the jars that corresponds to a provided regular expression.
This was possible thanks to the use of the very handy net.sf.antcontrib ANT tasks <for/> and <propertyregexp/>.

Here is an extract:
<target name="maven-all-artifacts-in-dir">
	<antcontrib:for param="jar.file">
		<path>
			<fileset dir="${jar.directory}" includes="${artifactRegexp}" />

		</path>
	<sequential>
	<!-- this is a windows only regex as we used the "\" -->
	<antcontrib:propertyregex override="yes" 
		property="artifactName" input="@{jar.file}" 
		regexp=".*\\([^\\]*)\.jar" select="\1" casesensitive="false" />

			<antcall target="${maven.target}">
				<param name="exec.dir" value="${jar.directory}" />
				<param name="artifactId" value="${artifactName}" />

				<param name="jarFileName" value="${artifactName}.jar" />
			</antcall>
	</sequential>
	</antcontrib:for>

</target>

Create LiveCycle SDK maven repository


This ant build file is here to help you construct your livecycle client maven repository.
It will deploy all the jars contained in the ${livecycle.sdk.home}/client-libs/common in your maven repositories :
I chose to apply
  • 8.0.3187.1.156868.1 for my artifacts' version (i.e. the version number I found in the jar manifest files)
  • com.adobe.livecyle as the artifacts groupId
  • the name of the jar file as an artifactId for all the files contained in the ${livecycle.sdk.home}/client-libs/common folder
    • adobe-utilities.jar is a special case : there is one for each JEE application server supported by livecycle
    • I chose to use a specific artifactId for each of those :
      • jboss-adobe-utilities
      • weblogic-adobe-utilities
      • websphere-adobe-utilities

Here is an extract of my build file showing how I handle the special case of adobe-utilities jars:
<target name="maven-livecycle-adobe-utilities">
		<property name="groupId" value="${livecycle.groupId}" />
		<property name="version" value="${livecycle.version}" />

		<property name="jarFileName" value="adobe-utilities.jar" />
		<property name="maven.repo.url" value="${maven.adobe.repo.url}" />

		<property name="description" value="${livecycle.artifacts.description}" />
		<antcontrib:for list="jboss,weblogic,websphere" param="livecycle.server">

			<sequential>
				<ant antfile="maven-repository-construction-calls.xml" target="${maven-target}">
					<property name="exec.dir" value="${livecycle.sdk.home}/client-libs/@{livecycle.server}" />

					<property name="artifactId" value="@{livecycle.server}-adobe-utilities" />
				</ant>
			</sequential>
		</antcontrib:for>

</target>


May be one day, the adobe engineering team will come with other groupId and artifact naming convention.
I don't know about that, those choices above are just personal/common sense, not Adobe's official.

Create blazeDS maven repository


This ant build file is here to help you construct your blazeds maven repository.
It will deploy all the adobe jars contained in blazeds-3.0.0.544/blazeds.unzipped.war/WEB-INF/lib directory into your maven local and remote repository.
I chose here
  • 3.0.0.544 for versioning my artifacts
  • com.adobe.blazeds as the artifacts groupId
  • the name of the jar file as an artifactId for all the following adobe specific jarfiles contained in blazeds-3.0.0.544/blazeds.unzipped.war/WEB-INF/lib directory:
    • all the flex-something.jar files
    • the cold fusion bridge : cfgatewayadapter.jar

<target name="maven-deploy-blazeds-libs">

		<property name="maven.repo.url" value="${maven.adobe.repo.url}" />
		<property name="description" value="${blazeds.artifacts.description}" />

		<ant antfile="maven-repository-construction-calls.xml" target="maven-all-artifacts-in-dir">
			<property name="maven.target" value="maven-deploy" />
			<property name="jar.directory" value="${blazeds.jar.dir}" />

			<property name="artifactRegexp" value="flex*.jar" />
		</ant>
		<ant antfile="maven-repository-construction-calls.xml" target="maven-deploy">

			<property name="jarFileName" value="cfgatewayadapter.jar" />
			<property name="exec.dir" value="${blazeds.jar.dir}" />

			<property name="artifactId" value="cfgatewayadapter" />
		</ant>
</target>


This is a different naming and versioning convention than the one chosen by the person that uploaded blazeds into ibiblio see
http://www.mvnrepository.com/artifact/com.adobe.blazeds, but I think it's much better my way, because it's closer to Adobe engineering's naming and versioning

My Adobe maven repository


My Adobe maven repository is now quickly building up, and it looks like that:
adobe-repo.jpg

Warnings:

  • those scripts are there, They are LGPL V3 licensed.
  • Those scripts were tested on my windows xp machine only using java-5, ant-1.7, ant-contrib-1.0b3 and maven-2.0.9
    • You'll have to adapt the regular expression I used if you're running this on a Linux/Unix machine.
Creative Commons License
sous contrat Creative Commons.


Here is short entry to tell you how to use maven to quickly and nicely set up a open source (standard de facto) web application samples (ready for development, deploying, debugging and unit testing) : using
  • maven archetype plugins
  • jetty
  • eclipse
See my previous post for the prerequisites:

download the latest version of maven-archetype-plugin

To trick maven to update its version of maven-archetype-plugin I added this plugin dependency in one of my project. Don't know if its the right way to do it. Maven can be so scriptic sometimes.

<plugin>

    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-archetype-plugin</artifactId>
    <version>2.0-alpha-2</version>
</plugin>

I'm pretty sure this is nicer way to do it; please, let me know.

Create your project from a appfuse-basic-spring maven archetype

mvn archetype:create -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-basic-spring -DremoteRepositories=http://static.appfuse.org/releases -DarchetypeVersion=2.0.1 -DgroupId=com.adobe.consulting.fr -DartifactId=ac-fr-archetype

This plugin was to complex for me as a start :

It didn't pass the 10 minutes test. So I switched to a webtide (the jetty guys) archetype, as I was looking for something simple for me stupid.

Create your project from a webtide maven-archetype-Spring maven archetype

mvn archetype:create -DarchetypeGroupId=com.webtide -DarchetypeArtifactId=maven-archetype-Spring -DarchetypeVersion=1.0 -DgroupId=com.adobe.consulting.fr -DartifactId=maven-archetype-Spring-test

Create your WTP eclipse project

In order to

  • generate WTP project for Eclipse Europa,
  • configure your newly create eclipse project to use with the M2Elipse plugin.
use this commands:

mvn -Dwtpversion=1.5 eclipse:eclipse
mvn eclipse:m2eclipse -DdownloadSources=true  -DdownloadJavadocs=true

It's downloading an amazing bunch of jars… Don't know really why. Let me know. Anyway, ANT users will be have to be patient ! :-)

Test your newly create web application

Install Jetty and deploy your web app with maven, jetty and eclipse: Let's Debug your web app with eclipse, maven and jetty

h5. Set up you jetty web app server as a runnable external tools:

Go to the Run/External Tools/External Tools ..." menu item on the "Run" menu bar. Select "Program" and click the "New" button. On the "Main" tab, fill in the "Location:" as the full path to your "mvn" executable. For the "Working Directory:" select the workspace that matches your webapp. For "Arguments:" add jetty:run. Move to the "Environment" tab and click the "New" button to add a new variable named MAVEN_OPTS with the value:

-Xdebug -Xnoagent -Djetty.port=9999 -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=9998,server=y,suspend=n

A few remarks about this:

  • If you supply suspend=y instead of suspend=n, it will suspend the web server until the debugger is launched
  • I chose 9999 as the web http port number, because I'm already running jboss on port 8080
  • I chose port 9998 as the debug port number cause it was already used as well, I faced a ""ERROR: transport error 202: bind failed: Address already in use"
You may start jetty this way.

Deploy and Debug your project through eclipse launching maven jetty

Pull up the "Run/Debug/Debug ..." menu item and select "Remote Java Application" and click the "New" button. Fill in the dialog by selecting your webapp project for the "Project:" field, and ensure you are using the same port number as you specified in the address= property above.

You may now Run/Debug your project.

spring-archetype-demo

Tip

By the way It's quite usefull to your netstat command when you run jetty with the eclipse debugger

netstat -ao

References:

Creative Commons License
sous contrat Creative Commons.


Here is "short" entry to tell you how to use maven to quickly and nicely set up a simple and standard web application ready for development debugging and unit testing

prerequisites:

You must have installed:

Create your project from a maven archetype

The maven archetype plugin allows the user to create a Maven 2 project from an existing template called an archetype. Here is the one I used to create my simple web app.

mvn archetype:create -DgroupId=com.adobe.consulting.fr -DartifactId=ac_fr_samples -Dpackagename=com.adobe.consulting.fr -DarchetypeArtifactId=maven-archetype-webapp

Create your own sources and unit test folder structure

Those are default maven folder structure, if you follow that, you won't have anything more to configure in your build.

The main java source folder structure and packages

mkdir src/main/java/com/adobe/consulting/fr

The test java source folders structure and packages

mkdir src/test/java/com/adobe/consulting/fr
mkdir src/test/resources

lots of archetypes:

By the way, there are a lot of archetypes out there : here is a list http://docs.codehaus.org/display/MAVENUSER/Archetypes+List Those archetypes can create a lot of stuff in advance for you, like a full hibernate, spring, struts project skeleton.

Wouldn't it be great to have others for:

  • Adobe flex blazeDS/lcds project

Create your WTP eclipse project

The Eclipse plugin supports creating configurations for Eclipse WTP (Web Tools Project). Projects with a WAR packaging can be setup as WTP dynamic web projects and runtime dependencies are configured to be used when running them using Eclipse internal servers.

To generate WTP project for Eclipse Europa, use this command:

mvn -Dwtpversion=1.5 eclipse:eclipse

To configure your newly create eclipse project to use with the M2Elipse plugin.

mvn eclipse:m2eclipse -DdownloadSources=true  -DdownloadJavadocs=true

Other neat options:

Now, just import this project in Eclipse

Install Jetty and deploy your web app with maven:

Edit your maven project object model

Edit your pom.xml to add the maven-jetty-plugin

<build>

    <finalName>ac_fr_samples</finalName>
    <plugins>
      <plugin>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>maven-jetty-plugin</artifactId>

      </plugin>
    </plugins>
  </build>

Install Jetty and deploy your web app in one maven command

mvn -Djetty.port=9999 jetty:run
I chose 9999 as the web http port number, because I'm already running jboss on port 8080

Test your web app

Go to http://localhost:9999/ac_fr_samples/

jetty.jpg

Combine Jetty, maven and eclipse :

Let's Debug your web app with eclipse, maven and jetty

Stop the above jetty instance

Set up you jetty web app server as a runnable external tools:

Go to the Run/External Tools/External Tools ..." menu item on the "Run" menu bar. Select "Program" and click the "New" button. On the "Main" tab, fill in the "Location:" as the full path to your "mvn" executable. For the "Working Directory:" select the workspace that matches your webapp. For "Arguments:" add jetty:run. Move to the "Environment" tab and click the "New" button to add a new variable named MAVEN_OPTS with the value:

-Xdebug -Xnoagent -Djetty.port=9999 -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=9998,server=y,suspend=n

A few remarks about this:

  • If you supply suspend=y instead of suspend=n, it will suspend the web server until the debugger is launched
  • I chose 9999 as the web http port number, because I'm already running jboss on port 8080
  • I chose port 9998 as the debug port number cause it was already used as well, I faced a ""ERROR: transport error 202: bind failed: Address already in use"
You may start jetty this way.
Deploy and Debug your project through eclipse launching maven jetty

Pull up the "Run/Debug/Debug ..." menu item and select "Remote Java Application" and click the "New" button. Fill in the dialog by selecting your webapp project for the "Project:" field, and ensure you are using the same port number as you specified in the address= property above.

You may now Run/Debug your project.

Monitor the quality of your project

Lots of plugin out there. Here is the first few that don't cost a penny to set up and give quite a few indicators.

Add this to your pom.xml:

<reporting>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>

				<artifactId>
					maven-project-info-reports-plugin
				</artifactId>
			</plugin>
			<plugin>
				<artifactId>maven-javadoc-plugin</artifactId>

				<version>2.1</version>
				<configuration>
					<aggregate>true</aggregate>
				</configuration>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-report-plugin</artifactId>
			</plugin>
			<plugin>

				<artifactId>maven-checkstyle-plugin</artifactId>
				<configuration>
					<configLocation>
						http://svn.apache.org/repos/asf/struts/maven/trunk/build/struts_checks.xml
					</configLocation>

				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jxr-plugin</artifactId>

			</plugin>
			<plugin>
				<artifactId>maven-pmd-plugin</artifactId>
			</plugin>
			<plugin>

				<groupId>net.sf.dtddoc</groupId>
				<artifactId>dtddoc-maven-plugin</artifactId>
				<configuration>
					<excludes>
						<exclude>**/web-app*</exclude>

					</excludes>
				</configuration>
			</plugin>
		</plugins>
	</reporting>

To generate the associated reports and the project site, just use:

mvn site

and you'll get this for free (as in free software, and free beer :-))

site-report.jpg

Alternatives : use Jboss or tomcat :

What you did with the very fast and light jetty web server, you may also do it with the full J2EE beast Jboss

Edit your pom.xml to add the maven-jboss-plugin

<plugin>
				<groupId>org.codehaus.mojo</groupId>

				<artifactId>jboss-maven-plugin</artifactId>
				<configuration>
					<hostName>localhost</hostName>
					<serverName>all</serverName>

					<port>8080</port>
				</configuration>
	</plugin>

It will allow you to deploy through maven (and jmx) your web application build by maven:

mvn jboss:deploy

The same goes with Tomcat: you also have a maven tomcat plugin.

References:

maven:

Web application, eclipse wtp, jetty and maven :
Creative Commons License
sous contrat Creative Commons.


Déjà plus d'une semaine que le salon solution linux est terminé, voici enfin mes quelques notes. Tout d'abord merci à tout ceux qui ont répondu à mon petit sondage. Il faut que je trouve le temps de compiler les réponses et vous en faire un vrai petit article.

Car la qualité ne sera-t-elle pas toujours un sujet d'actualité ? Hier encore, Olivier de chez Octo nous livrait ses réflexions et lectures sur l'approche de la qualité logicielle

En attendant, sachez que le support de notre présentation "Construire sa vision qualité Java avec des logiciels libre" sera bientôt disponible sur le site du salon, et est déjà en ligne et en pdf sur le blog de Romain et en flash ci-dessous. Cette présentation est sous license creative commons.

Mais revenons au salon; voici ce qu'ont retenu du salon:

  • Noel (il nous livre ses retours sur le BPM)
  • Tristan (nous fait un compte rendu)
  • Romain (mon co-conférencier nous livre ses notes en anglais! allez savoir pourquoi?)
  • Michael (mon collégue de chez Adobe, également conférencier web 2.0 nous livre ses impressions et ses slides sur les solutions open source de développements Flex)
  • et Alexis.

Quant à moi, conférencier un peu occupé, je regrette de n'avoir pas pu passer plus de temps dans la cohue et le village des associations... Je retiendrai les présentations de Raphael Faudou sur topCased UML et Philippe Prados sur la gestion de conf et AJAX. Je vous recommande d'ailleurs chaudement la lecture de ses articles.

Et enfin pour avoir vous aussi une idée de l'esprit et de l'ambiance du salon, vous trouverez une vidéo grand public intéressante sur le site de LCI..

Creative Commons License
sous contrat Creative Commons.


Bonne année à tous ! Qu'elle soit de "qualité" pour vous et tous vos projets (Open Source ou non).

La "Qualité" c'est d'ailleurs le sujet de ma présentation au prochain salon solution linux : "Construire sa vision qualité d'un projet Java à l'aide de logiciels libres"

Je ferai cette présentation avec un ancien collègue de chez AtosOrigin, Romain Pelisse (qui est contributeur PMD et XRadar).

Nous présenterons (entre autres choses) nos retours d'expérience sur la mise en place et l'utilisation de nombreux outils d'analyses statiques de code Java :

  • Les outils de "bas niveau" de type : CheckStyle, PMD, FindBugs, JDepend, CKJM, Classycle, JUnit report, Cobertura, Emma....
  • Puis les outils de "second niveau" outils d'agrégation, de consolidation, de synthèse et d'historisation des rapports produits par ces premiers outils
Et afin d'enrichir notre présentation, j'aurai aimé avoir quelques retours de votre part à ce sujet, si vous avez quelques secondes pour répondre à ces questions, j'en serai très reconnaissant.

Romain et moi avons en effet une bonne connaissance de XRadar et QALab, mais nous avons assez peu de retour de sonar et le nouveau maven dashboard. Et vous ? Utilisez vous ces outils ? Y en a-t-il d'autres que l'on aurait oublié dans ce domaine ? Nous ne connaissons pas le monde d'Ivy ....

quality-dogs.jpg

Et enfin voici un petit sondage :

Verifiez-vous la qualité logiciel de vos projets ?

  • systématiquement, continuellement ?
    • dans l'IDE ?
    • en intégration continue ?
  • lors de la construction ? de l'intégration ? dans les réslutats des rapports de builds ?
    • build maven ? ant ? Ivy ?
  • de temps en temps ?
    • par sondage manuel ?
      • en cas de défauts uniquement ? sur demande du client ?
quality-ice-cream.jpg

Avez-vous mis en place des règles ? Y a-t-il un niveau de qualité requis pour une recette ?

  • des règles de style ?
  • des convention de codage ?
  • des chartes de développement définissant les règles de qualité logicielle ?
  • des chartes d'architecture ?
Que vérifiez vous et comment vérifiez-vous la qualité ?
  • le style de code ?
    • CheckStyle, autre ?
  • les "copié-collés" ?
    • CPD ? Condenser ? Autres ?
  • la taille et la complexité (cyclomatique) du code ?
    • javaNCSS, autre ?
  • les régles de codage, pattern et anti pattern de code ?
    • Avez vous défini vos propres règles de codages ?
    • avec PMD ? FindBugs ? Lint4J ? Hammurapi ? autre ?
  • les dépendances (cycliques ou pas), les couplages entre package ? entre classe ? les règles d'architecture en couche ?
    • JDepend ? Classycle ? CAP ? DependencyFinder ? Clirr ? autre ?
  • la présence et la couverture des tests unitaires ?
    • TestNG ? JUnit ? Corbertura ? Emma ? autre ?
qa-ok.jpg

Consolidez vous les rapports ? pour avoir une note, une "synthèse" globale ?

  • sous quelle forme ?
  • Quel outil utilisez vous ? XRadar ? Sonar ? Maven Dashboard ? autre ?
Historisez-vous les résultats ?
  • par release ? par build ?
  • Comment ? XRadar ? QaLab ? autre ?
Utilisez vous des outils de refactoring, intégré au outils de contrôle qualité ?
  • JackPot ? Spoon ? autre ?
quality-you-can-taste.jpg
Creative Commons License
sous contrat Creative Commons.


Adobe organise bientôt sa grande messe européenne, MAX 2007, elle se déroulera du 15 au 17 Octobre à Barcelone. Adobe y présentera ses dernières innovations technologiques, on y retrouvera plus de 200 ateliers, sessions de formations pratiques, et présentations réalisées par des experts de l’Industrie, ainsi que des expositions de partenaires, des manifestations informelles et ...

... sans doute, plein de t-shirts flex, comme ici lors de JavaPolis :-)

La plupart d'entre vous le savent déjà, je viens de rejoindre les équipes consulting d'Adobe en tant que architecte technique; malheureusement, je n'ai pas de place à offrir, mais je vous invite par contre à participer à l'opération : mon ticket pour MAX, qui vous permettra peut-être de gagner un ticket (incluant un aller/retour Paris Barcelone + 3 nuits d’hôtel) pour assister à l’évènement. Tentez-donc votre chance !

Creative Commons License
sous contrat Creative Commons.