我正在通过Maven使用Apache Spark,我试图通过包含第三方jar并尝试使用其中的一些方法来修改源代码。
使用
编译Spark项目时出现以下错误mvn -Dhadoop.version=2.2.0 -Dscala-2.11 -DskipTests clean package
not found: object edu
[ERROR] import edu.xxx.cs.aggr._
我修改了ResultTask.scala
以包含import语句。所以,maven无法找到我想要使用的jar并将其与项目链接。
我在pom.xml文件中添加了一个依赖项,例如:
<dependency>
<groupId>edu.xxx.cs</groupId>
<artifactId>aggr</artifactId>
<version>0.99</version>
<scope>system</scope>
<systemPath>${basedir}/aggr.jar</systemPath>
</dependency>
我尝试链接的jar文件与spark pom.xml文件位于同一目录中。我将此依赖项添加到pom.xml。我将它插入到pom.xml文件中的两个现有依赖项之间。我不确定什么是错的,但我现在只想将jar链接起来,以便我可以使用其中的方法。我也不确定我是否应该使用groupId,artifactId和version的特定内容。 edu.xxx.cs.aggr是包含其他源文件和包的根包。我将不胜感激任何帮助。
更新
我用过
mvn install:install-file -Dfile=<path-to-file> -DgroupId=edu.xxx.cs -DartifactId=aggr -Dversion=0.99 -Dpackaging=jar to install the jar to the .m2 repo. I checked the repo to see if it was installed, and it was.
我将pom.xml中的依赖项更改为
<dependency>
<groupId>edu.purdue.cs</groupId>
<artifactId>aggr</artifactId>
<version>0.99</version>
</dependency>
我仍然得到同样的错误。
答案 0 :(得分:4)
这是我如何将系统依赖项添加到我的maven pom.xml中。在项目根路径中,我创建了lib目录,并在那里放置了我的jar文件。
<dependency>
<groupId>com.sshx</groupId>
<artifactId>sshx</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${basedir}/lib/sshxcute-1.0.jar</systemPath>
</dependency>
如果您仍面临同样的问题,请尝试通过从jar文件位置
发出以下命令手动添加依赖项mvn install:install-file -Dfile=sshxcute-1.0.jar -DgroupId=com.sshx -DartifactId=sshx -Dversion=1.0 -Dpackaging=jar
此命令会将jar作为依赖项添加到.m2存储库中,您需要更改pom.xml依赖项,如下所示:
<dependency>
<groupId>com.sshx</groupId>
<artifactId>sshx</artifactId>
<version>1.0</version>
</dependency>
完成后,从命令提示符发出mvn clean install
命令并构建应用程序。
但是,另一种选择是创建本地存储库。看看这个帖子: How to include local jar files in Maven project
答案 1 :(得分:0)
尝试将文件名包含在变量中。据我所知,您可能不会在systemPath参数中混合变量和路径。
答案 2 :(得分:0)
必须有几种选择但唯一的方法。 方式取决于Maven如何运作。它适用于依赖存储库。 因此,要成功编译,您需要为您指定有效的存储库JAR。 您可以使用本地存储库。要在那里添加JAR,您可以为该JAR调用“mvn install”命令。 作为替代方案,您可以在POM文件中指定用于Maven的本地存储库的位置。
答案 3 :(得分:0)
您可以使用以下命令将Jar安装到本地maven存储库:
Map