Return-Path: X-Original-To: apmail-incubator-giraph-user-archive@minotaur.apache.org Delivered-To: apmail-incubator-giraph-user-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 7C7F69C9C for ; Thu, 10 Nov 2011 15:31:50 +0000 (UTC) Received: (qmail 61136 invoked by uid 500); 10 Nov 2011 15:31:50 -0000 Delivered-To: apmail-incubator-giraph-user-archive@incubator.apache.org Received: (qmail 61084 invoked by uid 500); 10 Nov 2011 15:31:50 -0000 Mailing-List: contact giraph-user-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: giraph-user@incubator.apache.org Delivered-To: mailing list giraph-user@incubator.apache.org Received: (qmail 61076 invoked by uid 99); 10 Nov 2011 15:31:50 -0000 Received: from minotaur.apache.org (HELO minotaur.apache.org) (140.211.11.9) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 10 Nov 2011 15:31:50 +0000 Received: from localhost (HELO mail-ww0-f43.google.com) (127.0.0.1) (smtp-auth username gdfm, mechanism plain) by minotaur.apache.org (qpsmtpd/0.29) with ESMTP; Thu, 10 Nov 2011 15:31:50 +0000 Received: by wwp14 with SMTP id 14so543672wwp.0 for ; Thu, 10 Nov 2011 07:31:48 -0800 (PST) Received: by 10.216.220.226 with SMTP id o76mr2189027wep.108.1320939108141; Thu, 10 Nov 2011 07:31:48 -0800 (PST) MIME-Version: 1.0 Received: by 10.216.177.146 with HTTP; Thu, 10 Nov 2011 07:31:07 -0800 (PST) In-Reply-To: References: <4EB55FA0.5070707@apache.org> <4EBA61C5.5090305@apache.org> From: Gianmarco De Francisci Morales Date: Thu, 10 Nov 2011 16:31:07 +0100 Message-ID: Subject: Re: Packaging a Giraph application in a jar To: giraph-user@incubator.apache.org Content-Type: multipart/alternative; boundary=0016364d1e7d4f8a4404b1631ad9 --0016364d1e7d4f8a4404b1631ad9 Content-Type: text/plain; charset=ISO-8859-1 Nice! It looks cleaner than my ant+ivy hack :) Thanks for sharing, -- Gianmarco On Thu, Nov 10, 2011 at 16:18, Claudio Martella wrote: > Ok, > > quite basically this is my pom.xml: > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 > http://maven.apache.org/maven-v4_0_0.xsd"> > 4.0.0 > org.acaro.graffiti > graffiti > jar > 1.0-SNAPSHOT > graffiti > http://maven.apache.org > > > > org.apache.maven.plugins > > maven-assembly-plugin > 2.2 > > > target > > > jar-with-dependencies > > > > > make-assembly > compile > > single > > > > > > org.apache.maven.plugins > > maven-eclipse-plugin > > > true > > true > > > > org.apache.maven.plugins > maven-shade-plugin > 1.5 > > > package > > shade > > > > > > > > > > > junit > junit > 4.8.2 > test > > > ch.qos.logback > logback-classic > 0.9.27 > > > com.google.guava > guava > r09 > > > org.antlr > antlr > 3.3 > > > org.apache.giraph > giraph > 0.70 > > > org.apache.hadoop > hadoop-core > 0.20.204.0 > provided > > > > > > You set your project dependecies as usual, set hadoop-core (you don't > really need it in the job jar) as and then use the > maven-shade (http://maven.apache.org/plugins/maven-shade-plugin/). At > package goal it will upack your dependencies and re-pack them along > with your project classes in an uberjar. > > maven-shade allows you to set excludes in case of conflicts. > > Easy, automatic and clean. > > > Hope this helps, > Claudio > > On Wed, Nov 9, 2011 at 12:19 PM, Avery Ching wrote: > > Would be great if you can document what you did. =) > > > > Thanks, > > > > Avery > > > > On 11/8/11 3:13 PM, Claudio Martella wrote: > >> > >> Sorry guys, may bad. > >> > >> Was calling job.waitForCompletion() directly. I've been coding > >> standard mapreduce whole weekend... > >> > >> Anyway I got a solution for clean packaging of your own application > >> over giraph, and that is exactly using maven-shade-plugin. it will > >> prepare the uberjar for you. > >> > >> On Tue, Nov 8, 2011 at 9:33 PM, Claudio Martella > >> wrote: > >>> > >>> Hello list, > >>> > >>> I'm actually having troubles as well to get my application running. > >>> > >>> I've give a shot to maven-shade plugin which unpacks my dependencies > >>> and packs them all together with my classes in a new jar. > >>> > >>> I attach the hierarchy of the jar so that somebody can maybe spot > >>> what's missing, because i can't get it working. I get an identity > >>> map-reduce job with jobconf complaining about no job jar being set. > >>> > >>> Any idea? > >>> > >>> On Sat, Nov 5, 2011 at 5:09 PM, Avery Ching wrote: > >>>> > >>>> Hi Gianmarco, > >>>> > >>>> You're right, most of us (to my knowledge) have been using Giraph with > >>>> an > >>>> uberjar as you've put it. However, Jakob has been doing some work to > >>>> make > >>>> this easier. See the below issue: > >>>> > >>>> https://issues.apache.org/jira/browse/GIRAPH-64 > >>>> > >>>> If you can suggest a better approach, please add to the issue or > create > >>>> a > >>>> new one if appropriate. > >>>> > >>>> Thanks, > >>>> > >>>> Avery > >>>> > >>>> On 11/5/11 4:11 AM, Gianmarco De Francisci Morales wrote: > >>>>> > >>>>> Hi community, > >>>>> > >>>>> I was wondering what is the current best practice to package an > >>>>> application in a jar for deployment. > >>>>> I tried the 'hadoop way' by putting giraph-*.jar in the /lib > directory > >>>>> of > >>>>> my jar, and using the -libjars option but none of them worked. It > looks > >>>>> like > >>>>> the backend classloader is doing some mess and it doesn't find my own > >>>>> classes in the jar. > >>>>> > >>>>> I resorted to uncompressing the giraph-*.jar and repackaging my > classes > >>>>> with it, all at the same level (an uber-fat jar), but even though it > >>>>> works > >>>>> it doesn't sound like the right approach. > >>>>> > >>>>> Any suggestions? > >>>>> > >>>>> Thanks, > >>>>> -- > >>>>> Gianmarco > >>>>> > >>>>> > >>>>> > >>>> > >>> > >>> > >>> -- > >>> Claudio Martella > >>> claudio.martella@gmail.com > >>> > >> > >> > > > > > > > > -- > Claudio Martella > claudio.martella@gmail.com > --0016364d1e7d4f8a4404b1631ad9 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Nice!
It looks cleaner than my ant+ivy hack :)

Thanks for sharing,
--
Gianmarco



On Thu, Nov 10, 2011 at 16:18, Claudio M= artella <claudio.martella@gmail.com> wrote:
Ok,

quite basically this is my pom.xml:

<project xmlns=3D"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"
=A0 =A0 =A0 =A0xsi:schemaLocation=3D"http://maven.apache.org/POM/4.0.0
http= ://maven.apache.org/maven-v4_0_0.xsd">
=A0 =A0 =A0 =A0<modelVersion>4.0.0</modelVersion>
=A0 =A0 =A0 =A0<groupId>org.acaro.graffiti</groupId>
=A0 =A0 =A0 =A0<artifactId>graffiti</artifactId>
=A0 =A0 =A0 =A0<packaging>jar</packaging>
=A0 =A0 =A0 =A0<version>1.0-SNAPSHOT</version>
=A0 =A0 =A0 =A0<name>graffiti</name>
=A0 =A0 =A0 =A0<url>http://maven.apache.org</url>
=A0 =A0 =A0 =A0<build>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<plugins>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<plugin>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<groupId= >org.apache.maven.plugins</groupId>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<artifac= tId>maven-assembly-plugin</artifactId>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<version= >2.2</version>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<configu= ration>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0<outputDirectory>target</outputDirectory>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0<descriptorRefs>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 =A0<descriptorRef>jar-with-dependencies</descr= iptorRef>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0</descriptorRefs>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0</config= uration>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<executi= ons>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0<execution>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 =A0<id>make-assembly</id>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 =A0<phase>compile</phase>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 =A0<goals>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<goal>single</goal>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 =A0</goals>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0</execution>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0</execut= ions>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0</plugin>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<plugin>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<groupId= >org.apache.maven.plugins</groupId>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<artifac= tId>maven-eclipse-plugin</artifactId>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<configu= ration>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0<downloadSources>true</downloadSources>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0<downloadJavadocs>true</downloadJavadocs>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0</config= uration>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0</plugin>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<plugin>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<groupId= >org.apache.maven.plugins</groupId>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<artifac= tId>maven-shade-plugin</artifactId>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<version= >1.5</version>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<executi= ons>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0<execution>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 =A0<phase>package</phase>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 =A0<goals>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<goal>shade</goal>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 =A0</goals>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 =A0<configuration>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 =A0</configuration>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0</execution>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0</execut= ions>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0</plugin>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0</plugins>
=A0 =A0 =A0 =A0</build>
=A0 =A0 =A0 =A0<dependencies>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<dependency>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<groupId>junit</gr= oupId>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<artifactId>junit<= /artifactId>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<version>4.8.2</ve= rsion>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<scope>test</scope= >
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0</dependency>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<dependency>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<groupId>ch.qos.logba= ck</groupId>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<artifactId>logback-c= lassic</artifactId>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<version>0.9.27</v= ersion>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0</dependency>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<dependency>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<groupId>com.google.g= uava</groupId>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<artifactId>guava<= /artifactId>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<version>r09</vers= ion>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0</dependency>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<dependency>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<groupId>org.antlr<= ;/groupId>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<artifactId>antlr<= /artifactId>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<version>3.3</vers= ion>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0</dependency>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<dependency>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<groupId>org.apache.g= iraph</groupId>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<artifactId>giraph<= ;/artifactId>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<version>0.70</ver= sion>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0</dependency>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<dependency>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<groupId>org.apache.h= adoop</groupId>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<artifactId>hadoop-co= re</artifactId>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<version>0.20.204.0&l= t;/version>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0<scope>provided</s= cope>
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0</dependency>
=A0 =A0 =A0 =A0</dependencies>
</project>


You set your project dependecies as usual, set hadoop-core (you don't really need it in the job jar) as <provided> and then use the
maven-shade (http://maven.apache.org/plugins/maven-shade-plugin/= ). At
package goal it will upack your dependencies and re-pack them along
with your project classes in an uberjar.

maven-shade allows you to set excludes in case of conflicts.

Easy, automatic and clean.


Hope this helps,
Claudio

On Wed, Nov 9, 2011 at 12:19 PM, Avery Ching <aching@apache.org> wrote:
> Would be great if you can document what you did. =3D)
>
> Thanks,
>
> Avery
>
> On 11/8/11 3:13 PM, Claudio Martella wrote:
>>
>> Sorry guys, may bad.
>>
>> Was calling job.waitForCompletion() directly. I've been coding=
>> standard mapreduce whole weekend...
>>
>> Anyway I got a solution for clean packaging of your own applicatio= n
>> over giraph, and that is exactly using maven-shade-plugin. it will=
>> prepare the uberjar for you.
>>
>> On Tue, Nov 8, 2011 at 9:33 PM, Claudio Martella
>> <claudio.martella= @gmail.com> =A0wrote:
>>>
>>> Hello list,
>>>
>>> I'm actually having troubles as well to get my application= running.
>>>
>>> I've give a shot to maven-shade plugin which unpacks my de= pendencies
>>> and packs them all together with my classes in a new jar.
>>>
>>> I attach the hierarchy of the jar so that somebody can maybe s= pot
>>> what's missing, because i can't get it working. I get = an identity
>>> map-reduce job with jobconf complaining about no job jar being= set.
>>>
>>> Any idea?
>>>
>>> On Sat, Nov 5, 2011 at 5:09 PM, Avery Ching<aching@apache.org> =A0wrote:
>>>>
>>>> Hi Gianmarco,
>>>>
>>>> You're right, most of us (to my knowledge) have been u= sing Giraph with
>>>> an
>>>> uberjar as you've put it. =A0However, Jakob has been d= oing some work to
>>>> make
>>>> this easier. =A0See the below issue:
>>>>
>>>> https://issues.apache.org/jira/browse/GIRAPH-64
>>>>
>>>> If you can suggest a better approach, please add to the is= sue or create
>>>> a
>>>> new one if appropriate.
>>>>
>>>> Thanks,
>>>>
>>>> Avery
>>>>
>>>> On 11/5/11 4:11 AM, Gianmarco De Francisci Morales wrote:<= br> >>>>>
>>>>> Hi community,
>>>>>
>>>>> I was wondering what is the current best practice to p= ackage an
>>>>> application in a jar for deployment.
>>>>> I tried the 'hadoop way' by putting giraph-*.j= ar in the /lib directory
>>>>> of
>>>>> my jar, and using the -libjars option but none of them= worked. It looks
>>>>> like
>>>>> the backend classloader is doing some mess and it does= n't find my own
>>>>> classes in the jar.
>>>>>
>>>>> I resorted to uncompressing the giraph-*.jar and repac= kaging my classes
>>>>> with it, all at the same level (an uber-fat jar), but = even though it
>>>>> works
>>>>> it doesn't sound like the right approach.
>>>>>
>>>>> Any suggestions?
>>>>>
>>>>> Thanks,
>>>>> --
>>>>> Gianmarco
>>>>>
>>>>>
>>>>>
>>>>
>>>
>>>
>>> --
>>> =A0 =A0 Claudio Martella
>>> =A0 =A0 claudio.= martella@gmail.com
>>>
>>
>>
>
>



--
=A0 =A0 Claudio Martella
=A0 =A0 claudio.martella@gmai= l.com

--0016364d1e7d4f8a4404b1631ad9--