2016-11-15 57 views
0

如果我检查我的有效POM,我会发现下面的条目中提供的Maven依赖性:替换局部类

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

这来自于我们必须使用,让我们的软件(BPMN进程)父POM运行在一个公司广泛的平台上。

现在到了一个哈克一部分。将会有一个更大的变化,我们不能再使用someArtifact。不幸的是,工件被我们所有的流程直接调用(您为流程设计流程并配置完整的合格类名称),并且不能只配置一个不同的工件,因为这很可能会破坏很多正在运行的流程。

简单的计划是创建具有相同的包名称的类,并且使用相同的类名,删除所有依赖于原包装,一切都应该正常工作。在测试过程中,我注意到,它并没有使用我的新类,但仍然是原来的一个,很可能是因为它被作为依赖通过强制父POM,由于某种原因更喜欢提供过我的地方之一。

撇除父POM提供的相关性似乎并没有工作,很容易?任何想法我怎么能解决我的问题?

+0

新课程在哪里?在用于测试的相同模块中? – JimHawkins

+0

@JimHawkins:新类是我们流程核心的一部分,我们所有的流程都可以访问逻辑的核心。 – Feroc

+0

运行'mvn dependency:tree'并检查是否有某个工件不被传递包含 – hoaz

回答

1

如果应用程序是普通的java,类那将是负载在classpath为了满足第一类。

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