我有一个本地jar,我想在我的项目中使用它。有很多方法可以做到:只需手动安装到本地仓库,使用父pom中的脚本,使用系统范围,使用本地repo声明。
我决定使用Maven Install插件将jar安装到repo中。这是一个配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>2.3.1</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<groupId>jacob</groupId>
<artifactId>jacob</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<file>${basedir}\lib\jacob.jar</file>
</configuration>
</execution>
</executions>
</plugin>
我试图以多种方式运行它: mvn初始化install:install-file mvn初始化 mvn install:install-file
但是我一直有例外:
[错误]无法执行目标 org.apache.maven.plugins:Maven的安装,插件:2.3.1:安装文件 项目MYPROJECTNAME上的(default-cli):目标的参数'file' org.apache.maven.plugins:maven-install-plugin:2.3.1:install-file are 遗失或无效 - &gt;
我只是想知道为什么它不起作用?看起来我被阶段和目标弄糊涂了..
最后,我采用了另一种方式:我将它放入我的父POM中,但为什么它与父母一起使用并且不适用于孩子?
答案 0 :(得分:3)
处理分离jar的最佳方法是开始使用存储库管理器并通过UI将此jar安装到存储库管理器中。从那时起,您可以将其用作通常的依赖项。让生活更轻松。
如果您想将其作为构建的一部分进行安装,那么您需要像这样调用maven:
mvn package
你不应该将没有生命周期的调用目标与生命周期部分install:install-file
混合在一起。{/ p>
这就是为什么你得到所描述的错误信息的原因,导致你没有在命令行上给出的command line part needs required parameters。
组合如:
initialize
让Maven毫无意义(rarly)。你已经将maven-install-plugin绑定到pom中的life-clycle,所以你应该简单地调用life cylce:
mvn install:install-file initialize
您将获得以下内容:
mvn initalize
但是我必须说像你一样安装一件神器是不好的做法。最好是使用像Nexus,Artifactory或Archiva这样的存储库管理器,或者如果真的不喜欢存储库管理器(我不明白为什么,但这是一个不同的故事)你可以使用Stephen Connolly's non-maven-jar-maven-plugin
除上述所有内容外,您还应使用更新版本的maven-install-plugin which current version number is 2.5.2