2012-08-16 184 views
4

我有一个在Maven中开发的项目。我想将新的jar文件添加到classpath中。我在pom.xml文件中添加新的依赖:将jar库添加到Maven项目

<dependency> 
<groupId>mzmatch</groupId> 
<artifactId>mzmatch</artifactId> 
<version>1.2.13</version> 
</dependency> 

所有的jar库在lib目录下。所有库的名称都匹配artifactId-version.jar,它们的位置是(在lib目录中)groupId/artifactId/version。所以我对我的mzmatch-1.2.13.jar文件也做了同样的处理。

除了在pom文件中添加新的依赖关系之外,我还将我的jar添加到了Manifest.MF文件的类路径中。但该软件仍然没有看到我的jar。我还应该做什么?或者我没有正确添加我的图书馆?

+0

恩......所以你想添加新的jar文件到classpath。你为什么要将它添加到pom.xml中,而不是classpath?你想将你的jar安装到maven系统中吗?如果是这样,你看看mvn install吗? – eis 2012-08-16 17:28:55

回答

9

我假设这是一个你开发的jar,现在希望Maven把它作为一个依赖。为此,您需要将其安装到本地Maven存储库。不是您项目的lib目录,而是.m2目录(可能在Windows的主目录下)。你可能想在命令行中运行以下命令:

mvn install:install-file -Dfile=<path-to-file> -DgroupId=mzmatch -DartifactId=mzmatch -Dversion=1.2.13 -Dpackaging=jar 

以获取更多信息看here

编辑1:我假设OP没有在一个更大的团队内工作。如果开发团队中的其他人需要依赖关系,则需要将其部署到共享的内部工件存储库,如NexusArtifactory。这些应用程序有一个上传你的工件的页面。

编辑2:在您的pom.xml中添加一个库作为依赖项,可以确保Maven在编译此新项目的代码时将在类路径中拥有它。如果你希望它在运行时(比如说,如果你想要一个可执行的jar),并且你想在你的MANIFEST.MF的Class-Path条目中拥有它,那么你可以使用Maven set it up。这仍然不会将mzmatch-1.2.13.jar文件放在与新项目相同的目录中。如果您不想手动执行该操作,则Maven可以再次运行do it for you

+0

如果OP与其他开发人员一起工作,则应将该文件部署到共享存储库,而不是安装到本地文件存储库中。 – jtahlborn 2012-08-16 18:02:35

+0

@jtahlborn假设OP在本地工作。不过,请注意内部回购。 – davidfmatheson 2012-08-16 18:07:52

+0

谢谢。不过,您不需要使用存储库页面,但很可能会使用'deploy:deploy-file'目标。 – jtahlborn 2012-08-16 20:05:32