2013-04-30 48 views
0

我是maven的新手。我想我的包,其依賴Hadoop項目的罐子,然後使用它像:使用maven爲hadoop項目打包多條記錄罐

hadoop jar project.jar com.abc.def.SomeClass1 -params ... 
hadoop jar project.jar com.abc.def.AnotherClass -params ... 

而且我想爲這個罐子(不同的Hadoop作業)多個入口點。

我該怎麼辦?

謝謝!

回答

1

有兩種方法來創建依賴關係的罐子:

  1. Hadoop的支持jar文件的jar格式 - 這意味着你的罐子含有包含將在提交作業被添加到類路徑罐子的lib文件夾和map/reduce任務執行
  2. 您可以解壓縮jar依賴關係,並將它們與您的類重新打包到一個單獨的jar中。

第一個需要你創建一個maven程序集定義文件,但實際上比它的價值更麻煩。第二個也使用maven程序集,但是使用內置的描述符。要使用第二個,剛纔添加以下的POM你project -> build -> plugins部分:

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <version>2.4</version> 
    <configuration> 
    <descriptorRefs> 
     <descriptorRef>jar-with-dependencies</descriptorRef> 
    </descriptorRefs> 
    </configuration> 
</plugin> 

現在,當你運行mvn包,你會得到你的目標文件夾兩個jar:

  1. ${project.name}-${project.version}.jar - 哪些將只包含您的項目的類和資源
  2. ${project.name}-${project.version}-jar-with-dependencies.jar - 將包含您的類/資源和從您的依賴關係樹的所有東西,編譯的範圍解壓縮並重新打包到一個罐子

對於多入口點,您不需要執行任何特定操作,只要確保您沒有在jar清單中定義Main-Class條目(如果您明確配置清單,否則默認不會命名爲主要類,所以你應該很好)

+0

感謝您的答案。但是如果我這樣打包,跑步時會抱怨找不到主班。但是,如果我在maven-assembly-plugin conf中添加多個主類,它就可以工作。 – darkjh 2013-05-02 08:33:07

+0

好的這個作品...多個主類不工作...謝謝 – darkjh 2013-05-02 08:59:02

相關問題