Java 在maven依赖插件中使用本地jar作为工件?

Java 在maven依赖插件中使用本地jar作为工件?,java,maven,jar,maven-plugin,Java,Maven,Jar,Maven Plugin,我们有一个maven项目,其中我们使用了一些在任何远程存储库中都不存在的工件。它们以编译的.jar文件的形式包含在我们项目的某个目录中,比如/lib。其中一些是“普通”依赖项,我们可以使用scope system+systemPath从/lib利用它们,但是有一个工件应该与maven依赖项插件解包目标一起使用。xml的相关部分如下所示 <plugin> <groupId>org.apache.maven.plugins</groupId> <

我们有一个maven项目,其中我们使用了一些在任何远程存储库中都不存在的工件。它们以编译的.jar文件的形式包含在我们项目的某个目录中,比如/lib。其中一些是“普通”依赖项,我们可以使用scope system+systemPath从/lib利用它们,但是有一个工件应该与maven依赖项插件解包目标一起使用。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>

org.apache.maven.plugins
maven依赖插件
解包资源
产生资源
打开
xxx.yyy.zzz
我们的神器
${target.directory}/somedir
文件1/**,文件2/**,文件3/**

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

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

如果这是一个第三方jar,您可以使用mvn install:install文件来完成这项工作。要执行此操作,请按照中的说明进行操作

希望这有帮助


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

您是否考虑过建立一个本地Nexus服务器并将您的本地工件放入其中?是的,我们目前正在解决这个问题,只需将所有工件安装到本地maven repos中,但从长远来看,我们希望通过上述方式解决,由于项目限制不允许将工件安装到远程存储库中,您还可以使用maven安装插件在构建过程中自动将系统jar部署到本地存储库,而不必手动执行。谢谢,最终我们也决定使用此解决方案