用本地类替换提供的Maven依赖项

时间:2016-11-15 13:50:38

标签: java maven dependencies

如果我查看我的有效pom,我会找到以下条目:

  <dependency>
    <groupId>com.package.of.other.department</groupId>
    <artifactId>someArtifact</artifactId>
    <version>2.4.2</version>
    <scope>provided</scope>
  </dependency>

这来自我们必须用来让我们的软件(bpmn进程)在公司范围的平台上运行的父pom。

现在来了一个hacky部分。将会有更大的变化,我们不能再使用someArtifact了。不幸的是,工件被我们所有的进程直接调用(你设计进程并为一个项配置完整的限定类名),并且不能只配置一个不同的工件,因为这很可能会破坏很多正在运行的进程。 / p>

简单的计划是创建一个具有相同包名并具有相同类名的类,删除对原始包的每个依赖项,一切都应该正常工作。在测试期间,我注意到它不使用我的新类但仍然是原始类,很可能是因为它通过强制父pom提供为依赖,并且出于某种原因优先于我的本地。

从父pom中排除提供的依赖项似乎不那么容易?!知道如何解决我的问题吗?

1 个答案:

答案 0 :(得分:1)

如果应用程序是常规java,那么将要加载的类是类路径顺序中遇到的第一个类。

如果使用其他运行时包依赖关系管理,则策略是不同的。例如,您可以在OSGi中调整import-package以确保在私有包中使用类。