我们有一个maven项目,我们在其中使用一些在任何远程存储库中都不存在的工件。它们包含在我们项目的某个目录中,例如/ lib,作为已编译的.jar文件。其中一些是"普通"我们可以使用范围系统+ systemPath从/ lib中使用的依赖关系,但是有一个工件应该与maven-dependency-plugin unpack目标一起使用。 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?
中获取答案 0 :(得分:0)
而不是从/ lib中获取,如果设置自己的Nexus / Artifactory / etc ...现在有点儿了,你可以将jar添加到本地存储库。每个人都必须在他们自己的计算机上执行此操作,但是一旦在那里,它将可用于该计算机上的所有maven构建的项目,因此您不必为每个项目都有/ lib副本。如果您自己编译该jar并且它是一个maven项目,您可以执行“mvn install”并将安装到您的本地仓库。请注意,mvn包不会安装到您的本地仓库。
如果这是第三方jar,您可以使用mvn install:install-file来执行此操作。为此,请按照https://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html上的说明操作。
希望这有帮助!
更新:通过本地存储库,我的意思可能与您在评论中提到的不同 - 我的意思是每个用户计算机上的本地存储库,而不是内部网本地的存储库服务器。对不起,如果这引起任何混淆:)