我知道PROVIDED依賴項是由容器提供的,應用程序不需要生成這個JAR。 1)所以,我使用JBOSS EAP 7.0.0.GA,並且在這個模塊文件夾中有以下jar:hibernate-core-5.0.9.Final-redhat-1.jar。提供依賴關係和JBOSS EAP 7
在我的項目我使用以下依賴性:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.0.9.Final-redhat-1</version>
</dependency>
它工作正常,沒有錯誤。但我明白我應該使用「PROVIDED」範圍,因爲這個jar由容器提供。它爲什麼有效?
2)我有另一個例子。在Jboss Eap 7.0.0.GA中,我有以下jar:jboss-servlet-api_3.1_spec-1.0.0.Final-redhat-1.jar。但在我的項目中,我有以下幾點:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
<optional>true</optional>
</dependency>
它工作得很好,但我不明白爲什麼。對我來說,正確的依賴關係應該是servlet-api_3.1_spec-1.0.0.Final-redhat-1提供的。爲什麼它也起作用?
你能舉一個真實的例子來更好地瞭解情況嗎? – RonaldoLanhellas
因此,如果我所有的依賴工作都沒有「提供」範圍,爲什麼我需要提供?只是爲了一個輕量級的JAR? – RonaldoLanhellas
如果您將自己的依賴關係添加到JAR中,那麼您將面臨具有相同名稱但不同版本的類可用於應用程序的風險。除非你非常詳細地研究JEE類的加載規則 - 而應用服務器實際上是尊重它的 - 否則告訴哪些類將在運行時加載會很尷尬。所以這不僅僅是一個較輕的JAR,而是在運行時保持一致。 –