我想指定一些不应该从远程存储库下载的工件,即使它们存在于那里。有没有办法在maven2中实现这个目标?
答案 0 :(得分:10)
您是否尝试过离线模式?
mvn -o
答案 1 :(得分:5)
不确定这是否是您所需要的,但您可以使用系统范围声明依赖关系,该范围告诉Maven假定特定JAR位于类路径中(例如,包含在java安装目录)。
来自docs:
此范围与提供的类似,只是您必须提供明确包含它的JAR。工件始终可用,并且不会在存储库中查找。
AFAIK,Maven基本上将本地存储库视为远程存储库的缓存,因此没有任何方法可以告诉它不要从远程存储库获取特定的依赖关系。
答案 2 :(得分:2)
我不清楚你究竟在追求什么,所以这里有几个不同解释的答案:
如果工件是传递依赖项,则可以指定排除依赖项。请参阅Dependency Mechanism documentation的传递依赖性排除部分。
如果要确保下载 no 工件,可以将 -o 作为命令行开关或添加< offline&gt将Maven设置为离线模式;真< /离线>到你的settings.xml
使用Nexus Maven存储库管理器,您可以设置代理存储库到远程存储库,并配置代理以阻止某些工件。您可以通过添加与工件的groupId和artifactId匹配的“存储库目标”来执行此操作,然后为Nexus用户没有的目标创建读取权限。任何连接到代理的用户都无法获得该工件。有关配置目标的详细信息,请参阅Nexus book。
如果这些都不符合您的需求,请详细说明您的问题。
答案 3 :(得分:0)
一种选择是使用install-file mojo安装文件的本地副本,并为您的副本指定一个不同的名称。预先挂起的“本地”。到groupid名称可以很容易地在pom文件中id。如果还可以轻松切换出来。
将它添加到您的本地存储库中:
mvn install:install-file -Durl = file://xmlthing.jar -Dinternal -Dfile = xmthing.jar -DgroupId = local.org.xmltool -DartifactId = xmlthing -Dversion = 1.6.1 -Dpackaging = jar < / p>
然后你会替换
<dependency>
<groupId>org.xmltool</groupId>
<artifactId>xmlthing</artifactId>
<version>1.6.1</version>
</dependency>
与
<dependency>
<groupId>local.org.xmltool</groupId>
<artifactId>xmlthing</artifactId>
<version>1.6.1</version>
</dependency>