我按照字母順序對build.gradle
的依賴關係進行了重新排序,之後我很快注意到我的Spring應用程序不再正常工作(它在啓動時暫停了消息java.lang.NoSuchMethodError: javax.servlet.ServletContext.getClassLoader()
)。如果我將底層依賴關係從中間移到頂端,那麼以前一切正常。Gradle:依賴關係的順序如何產生影響?
依賴性排序如何影響應用程序的運行方式?建議的順序是什麼?
我按照字母順序對build.gradle
的依賴關係進行了重新排序,之後我很快注意到我的Spring應用程序不再正常工作(它在啓動時暫停了消息java.lang.NoSuchMethodError: javax.servlet.ServletContext.getClassLoader()
)。如果我將底層依賴關係從中間移到頂端,那麼以前一切正常。Gradle:依賴關係的順序如何產生影響?
依賴性排序如何影響應用程序的運行方式?建議的順序是什麼?
它對應用程序的類路徑有影響。上面的依賴關係可能有一個較老版本的Servlet規範。這answer解釋了爲什麼舊的Servlet規範發生此特定錯誤。
這意味着頂層的依賴關係優先於下面的依賴關係?上下依賴關係的過渡依賴關係如何? –
是的,匹配FQN的第一個類按類路徑聲明(使用依賴性順序構建)的順序加載。對於過渡依賴關係,它可能會添加到類路徑中的父依賴關係之後。您應該增加日誌記錄以查看類路徑(java命令行中的-cp選項)。 –
在相關說明中,使用Grails 3.3.1,如果在build.gradle中將這些行按字母順序排列:apply plugin:「eclipse」|套用插件:「idea」|應用插件:「戰爭」|應用插件:「org.grails.grails-web」|應用插件:「asset-pipeline」|應用插件:「org.grails.grails-gsp」,然後將應用程序部署到Tomcat,它會失敗,並顯示以下消息:javax.servlet.ServletException:無法解析名稱爲'grailsDispatcherServlet'的servlet中名稱爲'/ index'的視圖 –