我有一个依赖项,我已在Maven本地存储库中安装并在本地使用但在部署服务器上不可用.我使用该依赖项,Class.forName(...)因此如果从部署服务器上的类路径中遗漏它将没有问题.
有没有办法告诉Maven忽略依赖,如果它无法解决它?
我似乎没有<scope>或者<optional>可以解决这个问题,但<profiles>如果有任何方法可以根据依赖项可用性激活/停用配置文件,则可能会这样做.
简答:不.
答案很长:一旦声明了依赖关系 - 无论是在公共部分还是在活动的配置文件中 - 当Maven尝试它时,它必须是可解析的; 否则构建失败.
如果maven允许所请求的行为,则构建的可重现性将受到很大影响.
如果默默无闻和不可再现性不是您的问题,这里有一个提示如何做到这一点:
无论如何,我强烈反对将这些事情纳入maven构建中.将它作为单独的功能,通过命令行中的ant调用,可能通常就足够了.
假设缺少的依赖项仅在本地环境中重要,您可以通过 .m2/settings.xml 使用配置文件和激活的组合
您从常规依赖项中删除依赖项,并将其作为引用的依赖项移动到 pom.xml(项目级别配置文件)的配置文件中,并通过 m2/settings.xml 激活该配置文件。
您还可以从 pom.xml 中完全删除依赖项,并将依赖项移至驻留在 .m2/settings.xml 中的配置文件(用户级别配置文件)
请参阅配置文件部分的介绍
另一种更适合您需求的方式可能更好
根据文件中存在的情况激活上述配置文件.m2/repository/local/dependency/1.0.0-Snapshot/local.jar
<profiles>
<profile>
<activation>
<file>
<exists>/home/user/.m2/repository/local/dependency/1.0.0-Snapshot/local.jar</exists>
</file>
</activation>
...
</profile>
</profiles>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12962 次 |
| 最近记录: |