向Maven添加系统依赖关系

时间:2015-05-20 10:42:20

标签: java maven apache-spark

我正在通过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>

我仍然得到同样的错误。

4 个答案:

答案 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