2012-03-09 88 views
0

我有一个包含一些地图缩减代码和几个命令行工具的jar。mvn依赖插件和Hadoop

要分发我依赖我使用Maven的依赖插件封装我所有的依赖在一个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> 

我希望有我的罐子使用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?

+0

为什么“不使用maven-assembly-plugin”? – 2012-03-11 06:52:26

+0

我已经知道如何使用程序集插件来做到这一点。我只是好奇,想知道是否有我缺少的替代品。 – 2012-03-12 16:53:39

回答

2

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