maven导入本地jar包_使用Maven安装本地jar

maven导入本地jar包

maven导入本地jar包

1.问题与选择

Maven是一种非常通用的工具,其可用的公共存储库首屈一指。 但是,总会有一个不在任何地方托管的工件,或者托管该工件的存储库有依赖的风险,因为当您需要它时,它可能不会启动。 发生这种情况时,有几种选择:

  • 硬着头皮安装完整的版本库管理解决方案,例如Nexus
  • 尝试将工件上传到更知名的公共存储库之一
  • 使用Maven插件在本地安装工件

Nexus当然是更成熟的解决方案,但也更复杂。 设置一个实例来运行Nexus,设置Nexus本身,配置和维护它对于使用单个jar这样的简单问题来说可能是过大的。 但是,如果这种情况(托管自定义工件)很常见,则存储库管理器很有意义。

直接将工件上传到公共存储库或在Maven Central中也是一种很好的解决方案,但通常是一个漫长的解决方案。 另外,该库可能根本没有启用Maven,这使处理过程变得更加困难,因此,现在就不能使用工件就不是一个现实的解决方案。 剩下的第三个选择是-在源代码管理中添加工件并使用maven插件-在这种情况下, maven-install-plugin可以在构建过程需要它之前在本地安装它。 到目前为止,这是最简单,最可靠的选择。

2.使用

让我们从将工件安装到本地存储库所需的完整配置开始:

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-install-plugin</artifactId>
   <version>2.4</version>
   <configuration>
      <groupId>org.somegroup</groupId>
      <artifactId>someartifact</artifactId>
      <version>1.0</version>
      <packaging>jar</packaging>
      <file>${basedir}/dependencies/someartifact-1.0.jar</file>
      <generatePom>true</generatePom>
   </configuration>
   <executions>
      <execution>
         <id>install-jar-lib</id>
         <goals>
            <goal>install-file</goal>
         </goals>
         <phase>validate</phase>
      </execution>
   </executions>
</plugin>

现在,让我们分解并分析此配置的详细信息。

2.1。 工件信息

工件信息定义为<configuration>元素的一部分。 实际语法与声明依赖项非常相似– groupIdartifactIdversion元素。 配置的下一部分需要定义工件的包装-指定为jar 。 接下来,我们需要使用Maven中提供属性提供要安装的实际jar文件的位置-这可以是绝对文件路径,也可以是相对路径。 在这种情况下, $ {basedir}属性表示项目的根,即pom.xml文件所在的位置。 这意味着someartifact-1.0.jar文件需要放置在根目录下的/ dependencies /目录中。 最后,还有一些其他可选的详细信息也可以配置。

2.2。 行刑

安装文件目标的执行被绑定到标准Maven 构建生命周期中验证阶段。 这样一来,便可以在生命周期的开始就安装工件,然后在下一个编译阶段实际需要该工件。 一旦执行了编译阶段,就可以将我们的someartifact-1.0.jar正确安装在我们的本地存储库中,就像从Maven Central本身中检索到的任何其他工件一样。

2.3。 生成pom与提供pom

是否需要为工件提供pom.xml文件的问题主要取决于工件本身的运行时依赖性。 简而言之,如果工件在其他jar上具有运行时依赖关系,则这些jar也将需要在运行时出现在类路径上。 使用简单的工件应该不会有问题,因为它在运行时可能没有依赖关系(依赖关系图中的叶子)。 安装文件目标中的generatePom选项应足以满足以下这些条件:

<generatePom>true</generatePom>

但是,如果工件更加复杂并且确实具有非平凡的依赖关系,那么,如果这些依赖关系尚未在类路径中,则必须添加它们。 一种方法是通过在项目的pom文件中手动定义这些新的依赖项。 更好的解决方案是提供一个自定义pom.xml文件以及已安装的工件:

<generatePom>false</generatePom>
<pomFile>${basedir}/dependencies/someartifact-1.0.pom</pomFile>

这将使Maven可以解决此自定义pom.xml中定义的工件的所有依赖关系,而不必在项目的主pom文件中手动定义它们。

3.结论

本文通过使用maven-install-plugin在本地安装,来介绍如何使用不在Maven项目中任何地方托管的jar。

参考:baeldung博客上,从我们的JCG合作伙伴Eugen Paraschiv使用Maven安装本地jar

翻译自: https://www.javacodegeeks.com/2013/04/install-local-jar-with-maven.html

maven导入本地jar包

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值