mvn依赖插件和Hadoop

时间:2012-03-09 20:56:09

标签: maven hadoop

我有一个包含一些map reduce代码和一些命令行工具的jar。

要分发我的依赖项,我使用maven依赖插件将我所有的依赖包装在jar中的lib directoy中:

       <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.3</version>
            <executions>
                <execution>
                    <id>copy-dependencies</id>
                    <phase>prepare-package</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${project.build.directory}/classes/lib</outputDirectory>
                        <overWriteReleases>false</overWriteReleases>
                        <overWriteSnapshots>false</overWriteSnapshots>
                        <overWriteIfNewer>true</overWriteIfNewer>
                        <excludeScope>provided</excludeScope>
                    </configuration>
                </execution>
                <execution>
                    <id>build-classpath</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>build-classpath</goal>
                    </goals>
                    <configuration>
                      configure the plugin here 
                    </configuration>
                </execution>
            </executions>
        </plugin>

当我从命令行运行各种类时,我希望我的jar使用lib目录java -cp myJar.jar org.mycompany.MyClass

然而,尽管我尽最大努力操纵MANIFEST.MF

,但这看起来并不起作用
<configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                       <classpathPrefix>./lib/</classpathPrefix>
                      <mainClass>com.mycompany.MainClass</mainClass>
                    </manifest>
                </archive>
            </configuration>

有没有办法在不使用maven-assembly-plugin的情况下执行此操作?

1 个答案:

答案 0 :(得分:2)

我假设您正在谈论在map / reduce作业中使用这些依赖项。如果是这样,请看Pere Ferrera Bertran的this article,它解释了如何使用hadoop的分布式缓存(以及其他两种方式)来做到这一点