【问题标题】:Use local jar as artifact in maven dependency plugin?在maven依赖插件中使用本地jar作为工件?
【发布时间】:2015-06-12 06:36:34
【问题描述】:

我们有一个 maven 项目,我们在其中使用了一些在任何远程存储库中都不存在的工件。它们包含在我们项目的某个目录中,例如 /lib,作为已编译的 .jar 文件。其中一些是“普通”依赖项,我们可以使用范围 system + systemPath 从 /lib 使用它们,但是有一个工件应该与 maven-dependency-plugin 解包目标一起使用。 pom.xml 的相关部分如下所示

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-dependency-plugin</artifactId>
   <executions>
       <execution>
           <id>unpack-resources</id>
           <phase>generate-resources</phase>
           <goals>
               <goal>unpack</goal>
           </goals>
           <configuration>
               <artifactItems>
                   <artifactItem>
                       <groupId>xxx.yyy.zzz</groupId>
                       <artifactId>ourartifact</artifactId>
                       <outputDirectory>${target.directory}/somedir</outputDirectory>
                       <includes>
                           files1/**,files2/**,files3/**
                       </includes>
                   </artifactItem>
               </artifactItems>
           </configuration>
       </execution>
   </executions>
</plugin>

但是,这仍然会尝试访问远程存储库并从那里获取工件,这当然不会成功。我们能否以某种方式实现也尝试从 /lib 获取此工件?

【问题讨论】:

  • 您是否考虑过建立本地 Nexus 服务器并将本地工件放入其中?
  • 是的,我们目前正在通过简单地将所有工件安装到本地 Maven 存储库中来解决这个问题,但从长远来看,期望通过上述方式解决,因为项目限制不允许将工件安装到远程存储库中

标签: java maven jar maven-plugin


【解决方案1】:

而不是从 /lib 获取,如果现在设置自己的 Nexus/Artifactory/etc... 有点多,您可以将 jar 添加到本地存储库。每个人都必须在自己的计算机上执行此操作,但是一旦到了那里,该计算机上的所有 maven 构建项目都可以使用它,因此您不必为每个项目都拥有 /lib 副本。如果您自己编译该 jar 并且它是一个 maven 项目,您可以执行“mvn install”,它将安装到您的本地 repo。请注意,mvn 包不会安装到您的本地仓库。

如果这是第 3 方 jar,您可以使用 mvn install:install-file 来执行此操作。为此,请按照https://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html 的说明进行操作。

希望这会有所帮助!

更新:对于本地存储库,我的意思可能与您在评论中提到的不同——我的意思是每个用户计算机上的本地存储库,而不是您的 Intranet 本地的存储库服务器。抱歉,如果这引起了任何混乱:)

【讨论】:

  • 您还可以在构建过程中使用 maven-install-plugin 将系统 jar 自动部署到本地存储库,而不必手动执行。
  • 谢谢,最终我们也决定采用这个解决方案
猜你喜欢
  • 1970-01-01
  • 2021-04-27
  • 2018-02-25
  • 2015-05-12
  • 1970-01-01
  • 2020-05-15
  • 2018-02-27
  • 2018-08-16
  • 1970-01-01
相关资源
最近更新 更多