簡體   English   中英

將外部庫添加到基於Maven的JSF項目的正確方法

[英]Right way of adding External Libraries to Maven based JSF project

我正在開發一個基於Maven + JSF + PrimeFaces的項目,我可以運行它並且沒有問題。 但我有一些問題。

我在pom.xml添加了PrimeFaces依賴項,在更新了Maven之后, Maven:org.primefaces:primefaces:5.2文件被添加到“外部庫”部分。 這時,我可以使用PrimeFaces名稱空間等,但是在我將primefaces-5.2.jar文件添加到lib文件夾之前,我不能使用它的組件,如Editor 然后代碼工作和PrimeFaces組件加載到頁面。

我做過這兩次進口有什么區別?

我想如果我在pom.xml添加PrimeFaces依賴並加載它,一切正常,但事實並非如此! 現在,如果我從pom.xml刪除PrimeFaces依賴項,所有與PrimeFaces相關的代碼在IDE中變為紅色並看起來有些遺漏,但是因為我在lib文件夾中有PrimeFaces jar文件,代碼仍然有效! 我不明白。

看來你正在混淆兩個不同的問題所以我會試着簡單地解釋一下。

在向應用程序添加依賴項(通過POM)時,此依賴項將添加到此應用程序的類路徑中。 類路徑表示編譯應用程序所需的每個依賴項。 這意味着,在添加它之后,您將能夠使用並導入該依賴項中的類,並且代碼將進行編譯。 如果沒有類路徑中的依賴關系,編譯器就無法解析導入,因此當您從POM中刪除它時會出現錯誤。 每個IDE都有自己的方式以一種很好的格式向用戶呈現類路徑。 對於您正在使用的IntelliJ,類路徑將顯示“外部庫”列表。 因此,“外部庫”只是IntelliJ向您展示類路徑及其包含內容的方式。

迄今為止的所有事情都處於“編譯時”。 Web應用程序的結果是需要部署在Web服務器上的war文件。 我們現在正在進入所謂的“運行時”。 war是一個包含Web應用程序的所有代碼的文件,包括其所有依賴項。 它們需要出現在war以便Web服務器可以正確加載類並解析導入。 這些依賴項總是位於WEB-INF/lib文件夾中(就是這樣)。 因此,此文件夾中的庫表示運行時所需的依賴項,即運行應用程序所需的依賴項。

這就是為什么你們都擁有它們(但它實際上是相同的依賴項):一個表示編譯時所需的依賴項,另一個表示運行時所需的依賴項。

在創建war文件時,Maven會自動將所有類路徑依賴項(除了提供的依賴項)置於WEB-INF/lib以便在運行時正確解析它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM