3 回答
TA貢獻1804條經驗 獲得超3個贊
來自Maven 文檔:
system:此范圍類似于提供的范圍,只是您必須顯式提供包含它的 JAR。工件始終可用,不會在存儲庫中查找。
provided:這很像編譯,但表示您希望 JDK 或容器在運行時提供依賴項。例如,在為 Java Enterprise Edition 構建 Web 應用程序時,您可以將對 Servlet API 和相關 Java EE API 的依賴設置為提供的范圍,因為 Web 容器提供了這些類。此范圍僅在編譯和測試類路徑上可用,不可傳遞。
似乎系統范圍需要容器或 JDK 提供依賴作為提供的范圍。因此,依賴項不會打包到 WAR 文件中。
maven-war-plugin您可以像這樣將依賴項打包到 lib 文件夾中:
<plugin>
? ? <artifactId>maven-war-plugin</artifactId>
? ? <version>2.4</version>
? ? <configuration>
? ? ? ? ...
? ? ? ? <webResources>
? ? ? ? ? ? <resource>
? ? ? ? ? ? ? ? <directory>libs</directory>
? ? ? ? ? ? ? ? <targetPath>WEB-INF/lib</targetPath>
? ? ? ? ? ? ? ? <includes>
? ? ? ? ? ? ? ? ? ? <include>ojdbc7-12.1.0.2.jar</include>
? ? ? ? ? ? ? ? </includes>
? ? ? ? ? ? </resource>
? ? ? ? </webResources>
? ? </configuration>
</plugin>
TA貢獻1836條經驗 獲得超4個贊
作為 Maven 構建的一部分,編譯范圍內的依賴項會自動添加到目標的 WEB-INF/lib 中。系統范圍內的依賴關系不是,必須通過定義明確提供具有系統范圍的依賴關系。
TA貢獻1856條經驗 獲得超5個贊
WAR 是 Tomcat、Glassfish、JBoss (...) 等 Servlet 容器的 Web 存檔。它們由 Servlet 規范指定。規范指出數據源(數據庫)在 Servlet-Containers 的領域。
(...) 類型 javax.sql.DataSource,在組件可供應用程序使用之前,容器會為其注入對數據源的引用。
您應該將數據庫驅動程序放置到 servlet 容器中,而不是 Web 應用程序中。
添加回答
舉報
