我有一個Maven多模塊項目,在主「運行時」模塊中帶有一個(或多個)稱爲「plugin-xx」的模塊,I從插件模塊動態加載一個類。 爲了避免類加載衝突,我創建了一個新的類加載器,指向目標目錄「plugin-xx」中的jar。如何定義需要的模塊,但不是Apache中的依賴項Maven
所以對於「運行時」模塊,我想告訴Maven,「plugin-xx」需要生成一個jar文件,但我不希望這個jar文件位於「runtime」類路徑中。
將「plugin-xx」添加爲依賴項會將其包括到類路徑中。
我有一個Maven多模塊項目,在主「運行時」模塊中帶有一個(或多個)稱爲「plugin-xx」的模塊,I從插件模塊動態加載一個類。 爲了避免類加載衝突,我創建了一個新的類加載器,指向目標目錄「plugin-xx」中的jar。如何定義需要的模塊,但不是Apache中的依賴項Maven
所以對於「運行時」模塊,我想告訴Maven,「plugin-xx」需要生成一個jar文件,但我不希望這個jar文件位於「runtime」類路徑中。
將「plugin-xx」添加爲依賴項會將其包括到類路徑中。
包括plugin-xx
作爲依賴項,但使用除compile
以外的依賴項作用域。我想你想這一個:
<scope>provided</scope>
從docs:
提供
這很像編譯,而是指你所期望的JDK或在運行時提供依賴的容器。例如,在爲Java Enterprise Edition構建Web應用程序時,您可以將Servlet API和相關Java EE API的依賴性設置爲範圍,因爲Web容器提供了這些類。此範圍僅在編譯和測試類路徑中可用,且不是傳遞性的。
我對你的要求不完全清楚,所以這是可能希望此相反:
<scope>runtime</scope>
從docs:
運行時間
此範圍指示編譯時不需要依賴項,但是用於執行。它在運行時和測試類路徑中,但不在編譯類路徑中。
您可以使用runtime
範圍作爲您的依賴關係。定義是這樣的:
<dependency>
<groupId>plugin-xx</groupId>
<artifactId>plugin-xx</artifactId>
<version>1.0</version>
<scope>runtime</scope>
</dependency>
在編譯時你不會看到在類路徑插件的主模塊中,但將被放置在類路徑上運行,因此您可以動態地與你的類加載器加載它。