2012-10-08 95 views
1

我知道这样的问题之前已经提出并回答过了,并花时间阅读这些主题,但不知何故,它们不会帮助我。我在本地添加了自己的Java代码到DSpace软件,我的代码依赖于另一个库,所以我必须将该库(JAR)包含在POM的<dependencies>部分中,对不对?这是我的条目如下:Maven:在POM中包含外部JAR

<dependency> 
     <groupId>de.mannheim.ids</groupId> 
     <artifactId>pid</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
     <systemPath>/absolute/path/to/jar/pid-client-0.0.1-SNAPSHOT.jar</systemPath> 
     <scope>system</scope> 
</dependency> 

这不帮助,但结果编译错误 - 相关的类不能被发现。我也尝试过mvn install:install-file -Dfile...,它告诉我一切正常的罐子(BUILD SUCCESS),但随后的mvn package失败,通常的错误。

我会做什么错?

+0

呃......以前的评论只是消失了,提示使用'compile'范围而不是'system'。 这是不是意味着其他库必须位于存储库中?对不起,如果我不清楚这一点,我只有本JAR的本地副本。另外,'systemPath'元素只允许使用'system'作用域。 – Joko

回答

2

在使用mvn install:install后,您应该可以照常使用工件。

如果命令返回构建成功,你应该能够在你的POM中使用此:

<dependency> 
     <groupId>de.mannheim.ids</groupId> 
     <artifactId>pid</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
</dependency> 

Maven会发现它喜欢它会发现在你的本地库的任何罐子。

+0

感谢Olivier,'mvn install:install'(没有文件说明等)给了我一个我不明白的错误 - 你能帮忙吗? [INFO] [install:install {execution:default-cli}] [INFO] ---------------------------- ----------------------------- [错误]编译错误 [INFO] ----------- ---------------------------------------------- [INFO]该项目的包装没有将文件分配到构建工件上 – Joko

+0

您可以复制/粘贴您键入的确切命令吗?请参阅此处的使用说明文件:http://maven.apache.org/plugins/maven-install-plugin/usage.html。并非所有参数都是强制性的,但您至少需要指定以下“mvn -X install:install-file -Dfile = path/to/mly/jar -DgroupId = j -DartifactId = -Dversion = -Dpackaging = jar'。当然,你需要在你的pom中指定相同的artifactId,groupId和版本。 –

+0

这是我的确切命令: 'mvn install:install-file -Dfile =/home/joachim/workspace/DSpace3/pid-client-0.0.1-SNAPSHOT.jar -DgroupId = de.mannheim.ids -DartifactId = pid -Dversion = 0.0.1-SNAPSHOT -Dpackaging = jar' 此命令返回BUILD SUCCESSFUL,并且POM条目看起来就像您在答案中发布的条目。 – Joko

相关问题