Nice!
It looks cleaner than my ant+ivy hack :)

Thanks for sharing,
--
Gianmarco



On Thu, Nov 10, 2011 at 16:18, Claudio Martella
<claudio.marte...@gmail.com>wrote:

> Ok,
>
> quite basically this is my pom.xml:
>
> <project xmlns="http://maven.apache.org/POM/4.0.0";
> 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";>
>        <modelVersion>4.0.0</modelVersion>
>        <groupId>org.acaro.graffiti</groupId>
>        <artifactId>graffiti</artifactId>
>        <packaging>jar</packaging>
>        <version>1.0-SNAPSHOT</version>
>        <name>graffiti</name>
>        <url>http://maven.apache.org</url>
>        <build>
>                <plugins>
>                        <plugin>
>                                <groupId>org.apache.maven.plugins</groupId>
>
>  <artifactId>maven-assembly-plugin</artifactId>
>                                <version>2.2</version>
>                                <configuration>
>
>  <outputDirectory>target</outputDirectory>
>                                        <descriptorRefs>
>
>  <descriptorRef>jar-with-dependencies</descriptorRef>
>                                        </descriptorRefs>
>                                </configuration>
>                                <executions>
>                                        <execution>
>                                                <id>make-assembly</id>
>                                                <phase>compile</phase>
>                                                <goals>
>                                                        <goal>single</goal>
>                                                </goals>
>                                        </execution>
>                                </executions>
>                        </plugin>
>                        <plugin>
>                                <groupId>org.apache.maven.plugins</groupId>
>
>  <artifactId>maven-eclipse-plugin</artifactId>
>                                <configuration>
>
>  <downloadSources>true</downloadSources>
>
>  <downloadJavadocs>true</downloadJavadocs>
>                                </configuration>
>                        </plugin>
>                        <plugin>
>                                <groupId>org.apache.maven.plugins</groupId>
>                                <artifactId>maven-shade-plugin</artifactId>
>                                <version>1.5</version>
>                                <executions>
>                                        <execution>
>                                                <phase>package</phase>
>                                                <goals>
>                                                        <goal>shade</goal>
>                                                </goals>
>                                                <configuration>
>                                                </configuration>
>                                        </execution>
>                                </executions>
>                        </plugin>
>                </plugins>
>        </build>
>        <dependencies>
>                <dependency>
>                        <groupId>junit</groupId>
>                        <artifactId>junit</artifactId>
>                        <version>4.8.2</version>
>                        <scope>test</scope>
>                </dependency>
>                <dependency>
>                        <groupId>ch.qos.logback</groupId>
>                        <artifactId>logback-classic</artifactId>
>                        <version>0.9.27</version>
>                </dependency>
>                <dependency>
>                        <groupId>com.google.guava</groupId>
>                        <artifactId>guava</artifactId>
>                        <version>r09</version>
>                </dependency>
>                <dependency>
>                        <groupId>org.antlr</groupId>
>                        <artifactId>antlr</artifactId>
>                        <version>3.3</version>
>                </dependency>
>                <dependency>
>                        <groupId>org.apache.giraph</groupId>
>                        <artifactId>giraph</artifactId>
>                        <version>0.70</version>
>                </dependency>
>                <dependency>
>                        <groupId>org.apache.hadoop</groupId>
>                        <artifactId>hadoop-core</artifactId>
>                        <version>0.20.204.0</version>
>                        <scope>provided</scope>
>                </dependency>
>        </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 <ach...@apache.org> 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
> >> <claudio.marte...@gmail.com>  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<ach...@apache.org>  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.marte...@gmail.com
> >>>
> >>
> >>
> >
> >
>
>
>
> --
>     Claudio Martella
>     claudio.marte...@gmail.com
>

Reply via email to