首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用maven for hadoop项目打包多条目jar

使用maven for hadoop项目打包多条目jar
EN

Stack Overflow用户
提问于 2013-04-30 20:35:51
回答 1查看 1K关注 0票数 0

我是maven的新手。我想打包我的hadoop项目的一个jar及其依赖项,然后像这样使用它:

代码语言:javascript
复制
hadoop jar project.jar com.abc.def.SomeClass1 -params ...
hadoop jar project.jar com.abc.def.AnotherClass -params ...

我希望这个jar有多个入口点(不同的hadoop作业)。

我怎么能做到呢?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-01 07:55:11

有两种方法可以创建具有依赖关系的jar:

  1. Hadoop支持jar格式的jar -意味着您的jar容器包含jar的lib文件夹,该文件夹将在作业提交和映射/还原任务执行时添加到类路径中。
  2. 您可以解压jar依赖项,然后将它们与类一起重新打包到单个整体jar中。

第一种方法需要您创建一个maven程序集定义文件,但实际上这比它的价值更麻烦。第二种方法也使用maven程序集,但使用了一个内置的描述符。要使用第二个命令,只需将以下内容添加到pom中的project -> build -> plugins部分:

代码语言:javascript
复制
<plugin>
  <artifactId>maven-assembly-plugin</artifactId>
  <version>2.4</version>
  <configuration>
    <descriptorRefs>
      <descriptorRef>jar-with-dependencies</descriptorRef>
    </descriptorRefs>
  </configuration>
</plugin>

现在,当您运行mvn包时,您将在目标文件夹中获得两个jars:

  1. ${project.name}-${project.version}.jar -它将只包含project
  2. ${project.name}-${project.version}-jar-with-dependencies.jar的类和资源-它将包含您的类/资源以及依赖关系树中的所有内容,范围是编译、解压和重新打包到单个jar

对于多入口点,您不需要做任何特定的事情,只需确保您没有在jar清单中定义Main-Class条目(如果您显式配置了清单,否则默认情况下不会命名主类,因此您应该很好)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16300070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档