Java MapReduce-Maven(它是如何工作的?)
我不熟悉Maven和Java。我在Eclipse中创建了一个简单的MapReduce程序,并使用maven指定依赖项。(我在POM.XML中指定了hadoop依赖项)。它下载了所有依赖项,我可以在maven依赖项中看到它们。然后我创建了一个JAR并在集群中运行它。一切正常。但是当我解压JAR文件时,在我的JAR中没有看到任何来自Hadoop的依赖JAR?那么我很困惑它是如何工作的?据我所知,你们需要分发所有的罐子。请教我 谢谢,Java MapReduce-Maven(它是如何工作的?),java,maven,mapreduce,Java,Maven,Mapreduce,我不熟悉Maven和Java。我在Eclipse中创建了一个简单的MapReduce程序,并使用maven指定依赖项。(我在POM.XML中指定了hadoop依赖项)。它下载了所有依赖项,我可以在maven依赖项中看到它们。然后我创建了一个JAR并在集群中运行它。一切正常。但是当我解压JAR文件时,在我的JAR中没有看到任何来自Hadoop的依赖JAR?那么我很困惑它是如何工作的?据我所知,你们需要分发所有的罐子。请教我 谢谢, John要构建包含依赖项的jar,您必须配置maven汇编插件。看
John要构建包含依赖项的jar,您必须配置
maven汇编插件
。看看这个:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>attached</goal>
</goals>
<phase>package</phase>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>com.example.package.MainClass</mainClass>
</manifest>
<manifestEntries>
<Source-Version>${build-version}</Source-Version>
</manifestEntries>
</archive>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
org.apache.maven.plugins
maven汇编插件
附属的
包裹
带有依赖项的jar
com.example.package.MainClass
${build version}
Hadoop在使用Hadoop\u类路径中指定的位置运行作业时加载jar文件
它位于conf/hadoop_env.sh文件中:
# Extra Java CLASSPATH elements. Optional.
# export HADOOP_CLASSPATH="<extra_entries>:$HADOOP_CLASSPATH"
#额外的Java类路径元素。可选。
#导出HADOOP_类路径=“:$HADOOP_类路径”
实际上这要看情况而定。如果您计划分发一个JAR,那么,是的,您需要一个带有依赖项的JAR。如果您可以区分maven工件,那么工件的依赖关系由maven自动处理。这就是为什么我感到困惑?