我有一个本地 jar,我想在我的项目中使用它。有很多方法可以做到这一点:只需手动安装到本地 repo,在父 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 初始化安装:安装文件
mvn 初始化
mvn install:安装文件
但我一直有一个异常(exception):
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-install-plugin:2.3.1:install-file (default-cli) on project MYPROJECTNAME: The parameters 'file' for goal org.apache.maven.plugins:maven-install-plugin:2.3.1:install-file are missing or invalid ->
我只是想知道为什么它不起作用?看起来我搞砸了阶段和目标..
最后我采取了另一种方式:我将它放入我的父 POM 中,但为什么它适用于父级而不适用于子级?
请您参考如下方法:
处理分离 jar 的最佳方法是开始使用存储库管理器并通过 UI 将此 jar 安装到存储库管理器中。从那时起,您可以将其用作通常的依赖项。让生活更轻松。
如果您想将它安装为您尝试过的构建的一部分,这意味着您需要像这样调用 maven:
mvn package
你不应该混淆没有生命周期的调用目标,如
install:install-file
生命周期部件为
initialize
.
这就是您收到描述的错误消息的原因,导致 command line part needs required parameters你没有在命令行上给出的。
组合如:
mvn install:install-file initialize
使 Maven 毫无意义(很少)。您已将 maven-install-plugin 绑定(bind)到 pom 中的生命周期,因此您应该简单地调用生命周期:
mvn initalize
你会得到类似下面的东西:
[INFO] ------------------------------------------------------------------------
[INFO] Building test 0.6-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-install-plugin:2.3.1:install-file (default) @ test ---
[INFO] Installing /home/mvntest/lib/jdom-1.0.jar to /home/.m2/repository/com/soebes/test/jacob/1.1/jacob-1.1.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.780s
[INFO] Finished at: Sat Oct 25 12:19:30 CEST 2014
[INFO] Final Memory: 6M/91M
[INFO] ------------------------------------------------------------------------
但是:我不得不说像你一样安装一个 Artifact 是不好的做法。最好是使用像 Nexus 这样的存储库管理器。 , Artifactory或 Archiva或者如果真的不喜欢存储库管理器(我不明白为什么,但这是另一回事),您可以使用 Stephen Connolly's non-maven-jar-maven-plugin
除了以上所有内容,您还应该使用 maven-install-plugin which current version number is 2.5.2 的更新版本。