跟着spark的官方文档学习简单的语法,敲了一个小demo,尝试打包放到集群上运行。因为自己的无知遇到各种问题。
问题一:Maven package 之后发现target目录下的classes目录下没有生成相应的类。
存在的原因之一:pom.xml 没有配置source的路径。
如果没有配置,默认回去找src/main/java的,加上这么一行指定sourceDirectory的位置,这样maven在打包的时候才知道到哪里去找你要打包的代码。
为什么默认会找到src/main/java呢。这是因为如果你没有指定的属性,maven回去superpom里面找,你没有配,那我就用superpom里面的默认值。
什么是superpom呢。可以理解为根pom,pom也是有继承性的,所有的pom都继承自superpom,里面规定了很多的默认属性。
maven 官方是这么说的:
Similar to the inheritance of objects in object oriented programming, POMs that extend a parent POM inherit certain values from that parent. Moreover, just as Java objects ultimately inherit from java.lang.Object, all Project Object Models inherit from a base Super POM.
贴一个放在这里:
<project>
<modelVersion>4.0.0</modelVersion>
<repositories>
<repository>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>