依赖类型
Maven会用到的依赖基本就是5种,compile,test,provided,runtime,system
1compile:编译依赖范围,默认使用该范围。编译、测试、运行都有效
2test:测试依赖范围。支队测试的classpath有效。例如Junit,greenMail。
3provided:对编译和测试有效,对运行无效,常用于容器提供了的运行环境。例如servlet-api,容器以提供,所以只需要编译和测试有效即可。
4runtime:运行时依赖范围。例如jdbc驱动,编译和测试并不需要,只需要使用JDK提供的JDBC接口即可。
5system:系统依赖范围,依赖Maven仓库意外的依赖。
11 spring-security-core
Spring Security的核心功能是由spring-security-core包提供的,包含了认证和访问控制功能、支持standalone应用程序、方法级安全和JDBC支持。
323RELEASE
404RELEASE
orgspringframeworksecurity
spring-security-core
${orgspringframeworksecurityversion}
注意:我们使用的是32x版本的Spring Security--Spring和Spring Security有着不同的版本计划,所以他们的版本号之间没有一对一关系。
如果项目使用的是较老版本的Spring,需要注意的时Spring Security 31x版本不依赖于Spring 31x版本,因为Spring Security 31x版本在Spring 31之前发布。Spring的计划是在后续的版本中,使双方的版本号更为接近,更多细节请查看这个JIRA。我们将在后面的内容中看看这种情况对我们的实际影响。
12 spring-security-web
要为Spring Security增加Web支持,需要引入spring-security-web依赖:
orgspringframeworksecurity
spring-security-web
${orgspringframeworksecurityversion}
这个项目为Servlet环境引入了针对URL访问控制的相关基础安全组件和过滤器。
13 Spring Security与较老版本的Spring Core之间的依赖问题
如上文所述,这个新的依赖产生一个Maven依赖关系问题,Spring Security的相关jar不依赖于最新的Spring core的jar (而是以前的版本)。这可能使的被依赖的Spring core相关包在类路径中被配置前在最新的Spring 4x相关包的前面。
这是如何发生的呢?我们需要了解Maven处理版本冲突的机制,Maven会选择与依赖树树根最接近的版本。在之前的情况中,spring-orm依赖4x版本的spring-core,而spring-security-core依赖于328版本的spring-core。因此,spring-orm和sprint-security-web的定义顺序就是一个问题,先定义的会有更高的优先级。最终情况就是,我们的类路径中会有两个版本的spring-core。
为了避免这类问题,我们需要在我们的pom文件中明确指定一些Spring依赖,而不依靠Maven隐式依赖机制。我们将在pom的根文件中定义特定的依赖关系,这样这些依赖关系将会有更高的优先级。下面例子中,将对所有的Spring核心组件明确定义相同的版本,对于多模块项目,需要在父配置文件的dependencyManagement属性中定义。
orgspringframework
spring-core
${orgspringframeworkversion}
orgspringframework
spring-context
${orgspringframeworkversion}
orgspringframework
spring-jdbc
${orgspringframeworkversion}
orgspringframework
spring-beans
${orgspringframeworkversion}
orgspringframework
spring-aop
${orgspringframeworkversion}
orgspringframework
spring-tx
${orgspringframeworkversion}
orgspringframework
spring-expression
${orgspringframeworkversion}
orgspringframework
spring-web
${orgspringframeworkversion}
14 spring-security-config及其他
要使用丰富的Spring Security XML的命名空间,需要定义spring-security-config依赖:
orgspringframeworksecurity
spring-security-config
${orgspringframeworksecurityversion}
runtime
没有任何代码需要在编译时依赖这个包,所以它的范围应该定义为runtime。
最后,LDAP、ACL、CAS和OpenID支持需要分别增加各自的依赖包:spring-security-ldap, spring-security-acl, spring-security-cas和spring-security-openid。
web工程右键propertiesMyEclipseDeployment AssemblyMerged deployment of modules
选中Enable project specific settings
不要选中Enable merged deployment of Utility and EJB modules
以下是显示maven仓库中jar依赖关系的步骤:
1、创建一个新的Maven项目:
mvn archetype:create -DgroupId=orgsonatypemavenbookch3 -DartifactId=simple -DpackageName=orgsonatypemavenbook
2、构建打包应用:
mvn install[在pomxml同级目录下执行]
3、查看项目完整的pomxml文件,包括系统默认设置以及用户自定义设置:
mvn help:effective-pom
4、生成报告或者文档:
mvn site
5、mvn exec:java执行目标类
mvn exec:java -DexecmainClass=orgsonatypemavenbookweatherMain
6、查看插件的完整描述:
mvn help:describe -Dplugin=exec -Dfull
7、找出该项目所依赖的项目(jar)列表:
mvn dependency:resolve
mvn dependency:analyze(找出项目非直接依赖)
结果如下:
[INFO] The following files have been resolved:
[INFO] comibmicu:icu4j:jar:261:compile
[INFO] commons-collections:commons-collections:jar:31:compile
[INFO] commons-lang:commons-lang:jar:21:compile
[INFO] dom4j:dom4j:jar:161:compile
[INFO] jaxen:jaxen:jar:111:compile
[INFO] jdom:jdom:jar:10:compile
[INFO] junit:junit:jar:381:test
[INFO] log4j:log4j:jar:1214:compile
[INFO] oro:oro:jar:208:compile
[INFO] velocity:velocity:jar:15:compile
[INFO] xalan:xalan:jar:260:compile
[INFO] xerces:xercesImpl:jar:262:compile
[INFO] xerces:xmlParserAPIs:jar:262:compile
[INFO] xml-apis:xml-apis:jar:10b2:compile
[INFO] xom:xom:jar:10:compile
8、查看整个项目的依赖树:
mvn dependency:tree
结果如下:
[INFO] orgsonatypemavenbookch04:simple-weather:jar:10
[INFO] +- log4j:log4j:jar:1214:compile
[INFO] +- dom4j:dom4j:jar:161:compile
[INFO] | \- xml-apis:xml-apis:jar:10b2:compile
[INFO] +- jaxen:jaxen:jar:111:compile
[INFO] | +- jdom:jdom:jar:10:compile
[INFO] | +- xerces:xercesImpl:jar:262:compile
[INFO] | \- xom:xom:jar:10:compile
[INFO] | +- xerces:xmlParserAPIs:jar:262:compile
[INFO] | +- xalan:xalan:jar:260:compile
[INFO] | \- comibmicu:icu4j:jar:261:compile
[INFO] +- velocity:velocity:jar:15:compile
[INFO] | +- commons-collections:commons-collections:jar:31:compile
[INFO] | +- commons-lang:commons-lang:jar:21:compile
[INFO] | \- oro:oro:jar:208:compile
[INFO] \- junit:junit:jar:381:test
9、查看完整的依赖,包括那些因为冲突而被拒绝引入的依赖:
mvn install -X
10、打包应用(jar):
mvn install assembly:assembly
11、在 Jetty Servlet 容器中启动你的 web 应用:
mvn jetty:run
12、重新编译:
mvn compile
以上就是关于查看/优化依赖的maven命令有哪些全部的内容,包括:查看/优化依赖的maven命令有哪些、如何在Maven中配置Spring依赖、Maven项目依赖问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)