2016-11-15 45 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中調整導入包,以確保在私有包中使用類。