2017-08-31 15 views
1

我有一個Maven多模塊項目,在主「運行時」模塊中帶有一個(或多個)稱爲「plugin-xx」的模塊,I從插件模塊動態加載一個類。 爲了避免類加載衝突,我創建了一個新的類加載器,指向目標目錄「plugin-xx」中的jar。如何定義需要的模塊,但不是Apache中的依賴項Maven

所以對於「運行時」模塊,我想告訴Maven,「plugin-xx」需要生成一個jar文件,但我不希望這個jar文件位於「runtime」類路徑中。

將「plugin-xx」添加爲依賴項會將其包括到類路徑中。

回答

2

包括plugin-xx作爲依賴項,但使用除compile以外的依賴項作用域。我想你想這一個:

  • <scope>provided</scope>

docs

提供

這很像編譯,而是指你所期望的JDK或在運行時提供依賴的容器。例如,在爲Java Enterprise Edition構建Web應用程序時,您可以將Servlet API和相關Java EE API的依賴性設置爲範圍,因爲Web容器提供了這些類。此範圍僅在編譯和測試類路徑中可用,且不是傳遞性的。

我對你的要求不完全清楚,所以這是可能希望此相反:

  • <scope>runtime</scope>

docs

運行時間

此範圍指示編譯時不需要依賴項,但是用於執行。它在運行時和測試類路徑中,但不在編譯類路徑中。

1

您可以使用runtime範圍作爲您的依賴關係。定義是這樣的:

<dependency> 
    <groupId>plugin-xx</groupId> 
    <artifactId>plugin-xx</artifactId> 
    <version>1.0</version> 
    <scope>runtime</scope> 
</dependency> 

在編譯時你不會看到在類路徑插件的主模塊中,但將被放置在類路徑上運行,因此您可以動態地與你的類加載器加載它。

相關問題