2008-11-17 98 views
2

如何使用Maven安装特定的包,如derbytools,而不将其指定为项目的依赖项?Maven的安装包

回答

4

以下是使用mvn install目标的示例。我用windows风格的env vars代替了你需要提供的参数。

mvn install:install-file -DgroupId=%DERBYTOOLS_GROUP_ID% \ 
    -DartifactId=%DERBYTOOLS_ARTIFACT_ID% \ 
    -Dversion=%DERBYTOOLS_VERSION% \ 
    -Dpackaging=jar \ 
    -Dfile=%DERBYTOOLS_FILE_PATH% 
+0

什么是文件的说法?当我定义依赖关系时,我不必指定它。 – Pablo 2008-11-17 17:59:11

1

对于Maven能够使用jar的情况,需要将jar声明为依赖项。

如果你有一个在Maven仓库中不存在的jar,你可以使用install-plugin的install-file goal(正如富人的回答所说)将它安装到本地仓库。这会使用您提供的值生成一个pom,并将pom和jar安装到本地存储库。一旦完成,你会将依赖项添加到你的项目的pom中并按照正常的方式使用它。

在这种情况下,依赖并在中央Maven仓库存在(你可以简单的搜索使用Sonatype public repository BTW文物),所以你可以简单地添加这个依赖于你的POM:

<dependency> 
    <groupId>org.apache.derby</groupId> 
    <artifactId>derbytools</artifactId> 
    <version>10.4.2.0</version> 
</dependency> 

如果你这样做由于某种原因不想安装依赖项,您可以使用system作用域通过其绝对文件系统路径引用jar。不推荐这种方法,因为它明显影响可移植性。

从文档:

依赖与观测系统的持续使用和存储库中没有抬起头来。它们通常用于告知Maven有关由JDK或VM提供的依赖关系。

你可以参考你的derbytools水瓶中像这样的系统范围依赖:

<dependency> 
    <groupId>org.apache.derby</groupId> 
    <artifactId>derbytools</artifactId> 
    <version>10.4.2.0</version> 
    <scope>system</scope> 
    <systemPath>/path/to/derbytools.jar</systemPath> 
</dependency>