有兩種方法來創建依賴關係的罐子:
- Hadoop的支持jar文件的jar格式 - 這意味着你的罐子含有包含將在提交作業被添加到類路徑罐子的lib文件夾和map/reduce任務執行
- 您可以解壓縮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:
${project.name}-${project.version}.jar
- 哪些將只包含您的項目的類和資源
${project.name}-${project.version}-jar-with-dependencies.jar
- 將包含您的類/資源和從您的依賴關係樹的所有東西,編譯的範圍解壓縮並重新打包到一個罐子
對於多入口點,您不需要執行任何特定操作,只要確保您沒有在jar清單中定義Main-Class
條目(如果您明確配置清單,否則默認不會命名爲主要類,所以你應該很好)
感謝您的答案。但是如果我這樣打包,跑步時會抱怨找不到主班。但是,如果我在maven-assembly-plugin conf中添加多個主類,它就可以工作。 – darkjh 2013-05-02 08:33:07
好的這個作品...多個主類不工作...謝謝 – darkjh 2013-05-02 08:59:02