如何在Maven中配置Spring依賴?
一.spring-security-core
SpringSecurity的核心功能由spring-security-core包提供,包括認證和訪問控制功能、對獨立應用程序的支持、方法級安全性和JDBC支持。
ltpropertiesgt
lt/屬性gt
ltdependencygt
ltartifactIdgtspring-security-corelt/artifactIdgt
ltversiongt${}lt/versiongt
lt/依賴性gt
注意:我們使用的是SpringSecurity的3.2.x版本——Spring和SpringSecurity的版本計劃不同,所以它們的版本號之間沒有一一對應的關系。
如果項目使用的是Spring的老版本,需要注意的是SpringSecurity3.1.x的版本并不依賴于Spring3.1.x的版本,因為SpringSecurity3.1.x的版本是在Spring3.1之前發布的。春天s的計劃是在后續版本中讓雙方版本號更接近。更多詳情,請見本JIRA。我們將在后面看看這種情況對我們的實際影響。
第二,spring-security-web
為了給SpringSecurity添加Web支持,您需要引入spring-security-web依賴:
ltdependencygt
ltartifactIdgtspring-security-weblt/artifactIdgt
ltversiongt${}lt/versiongt
lt/依賴性gt
這個項目為Servlet環境的URL訪問控制引入了相關的基本安全組件和過濾器。
第三,SpringSecurity和老版本SpringCore之間的依賴性。
如上所述,這種新的依賴產生了Maven依賴問題,SpringSecurity的相關jar并不依賴于Springcore的最新jar(而是以前的版本)。這可能會使相關的Springcore相關包在被配置到類路徑之前位于最新的Spring4.x相關包之前。
這是怎么發生的?我們需要了解Maven處理版本的機制,Maven會選擇最接近依賴樹根的版本。在前一個例子中,spriNg-orm依賴于spring-core的4.x版本,而spring-security-core依賴于spring-core的3.2.8版本。所以spring-orm和sprint-security-web的定義順序是個問題,第一個會有更高的優先級。最后,在我們的類路徑中會有兩個版本的spring-core。
為了避免這種問題,我們需要在pom文件中明確指定一些Spring依賴,而不是依賴Maven隱式依賴機制。我們將在pom的根文件中定義特定的依賴關系,這樣這些依賴關系將具有更高的優先級。在下面的例子中,所有的Spring核心組件都將使用相同的版本來明確定義。對于多模塊項目,需要在父配置文件的dependencyManagement屬性中定義。
ltdependencygt
ltgroupIdgtorg.springframeworklt/groupIdgt
ltartifactIdgtspring-corelt/artifactIdgt
ltversiongt${}lt/versiongt
lt/依賴性gt
ltdependencygt
ltgroupIdgtorg.springframeworklt/groupIdgt
ltartifactIdgtspring-contextlt/artifactIdgt
ltversiongt${}lt/versiongt
lt/依賴性gt
ltdependencygt
ltgroupIdgtorg.springframeworklt/groupIdgt
ltartifactIdgtspring-jdbclt/artifactIdgt
ltversiongt${}lt/versiongt
lt/依賴性gt
ltdependencygt
ltgroupIdgtorg.springframeworklt/groupIdgt
ltartifactIdgtspring-beanslt/artifactIdgt
ltversiongt${}lt/versiongt
lt/依賴性gt
ltdependencygt
ltgroupIdgtorg.springframeworklt/groupIdgt
ltartifactIdgtspring-aoplt/artifactIdgtltversiongt${}lt/versiongt
lt/依賴性gt
ltdependencygt
ltgroupIdgtorg.springframeworklt/groupIdgt
ltartifactIdgtspring-txlt/artifactIdgt
ltversiongt${}lt/versiongt
lt/依賴性gt
ltdependencygt
ltgroupIdgtorg.springframeworklt/groupIdgt
ltartifactIdgtspring-expressionlt/artifactIdgt
ltversiongt${}lt/versiongt
lt/依賴性gt
ltdependencygt
ltgroupIdgtorg.springframeworklt/groupIdgt
ltartifactIdgtspring-weblt/artifactIdgt
ltversiongt${}lt/versiongt
lt/依賴性gt
四。spring-security-config和其他
要使用SpringSecurityXML的豐富名稱空間,您需要定義spring-security-config依賴關系:
ltdependencygt
ltartifactIdgtspring-security-configlt/artifactIdgt
ltversiongt${}lt/versiongt
ltscopegtruntimelt/scopegt
lt/依賴性gt
編譯時沒有代碼需要依賴這個包,所以它的作用域應該定義為runtime。
最后,LDAP、ACL、CAS和OpenID支持需要添加自己的依賴包:Spring-Security-LDAP、Spring-Security-ACL、Spring-Security-CAS和spring-security-op
如何構建一個基于Maven的Java項目?
其實這種問題比在問答里問要有效的多。具體流程不詳述,提幾點注意事項。
Maven倉庫Maven已安裝。根據你自己的關系網,你d最好設置好中心倉的地址,可以選擇國內一些相對較快的Maven鏡像倉。
在工程建設網上找個Mavan的例子,越簡單越好,把groupId和artifactId稍微改一下就行了。
如果使用IED,安裝Maven插件,然后在新建項目時選擇【新建Maven項目】,按照IDEs一步一步提示。(詳細流程可搜索)
如果您使用Springboot,還有另一種方法非常簡單:
進入網站:
默認情況下選擇Mavenproject輸入groupId和artifactId;選擇需要的Spring相關框架,比如SpringMVC、Kafka;點擊Generate按鈕,生成一個基于Maven的項目。
Maven命令執行Maven命令,可以在IDE中執行;您還可以配置環境變量,然后在命令提示符下,點擊Maven命令來執行。我習慣后者,因為大部分項目開發的時候都會有不同的版本,比如開發版,測試版,生產版。
我們開發的時候用的是開發版,會引入IDE。如果開發完成,開發的內容將通過版本控制工具合并到測試版本中。此時,測試版本的代碼不需要引入到IDE中。代碼合并后,可以通過maven-cleanpackage直接打包測試版本。
希望我的回答能幫到你!