如何使用Maven安装特定软件包(如derbytools),而不将其指定为项目的依赖项?
答案 0 :(得分:4)
以下是使用mvn install
目标的示例。我用windows风格的env变种来代替你需要提供的参数。
mvn install:install-file -DgroupId=%DERBYTOOLS_GROUP_ID% \
-DartifactId=%DERBYTOOLS_ARTIFACT_ID% \
-Dversion=%DERBYTOOLS_VERSION% \
-Dpackaging=jar \
-Dfile=%DERBYTOOLS_FILE_PATH%
答案 1 :(得分: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 jar引用为系统范围的依赖项,如下所示:
<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>