maven ZZ学习笔记,讲解的很好
每家公司都具有自己的仓库
parent pom
* 编译检查--检查重复类,重复包
* 公共依赖 : 每个项目每个人都依赖公司的
* 必须引用 : 每个项目都引用公司的 parent pom
(1), 重复包
Guava 也要依赖第三方,比如guava 15的版本依赖 A 包1.0,然后你自己的项目也间接依赖 A包1.1.此时编译成 war包的时候,你运行期??
answ : classload 不固定,要看 classload 的加载顺序。运行期,其实有可能出问题,...
解决方案是 : 将依赖树列出来,有重复的就不让过。
我们给别人发布jar包的时候,是不能有配置文件的。原因 : 比如你的jar包中有个 配置文件 XXX.xml, 然后用户也有可能有这个 XXX.xml 名字的。
(2), 重复类
你将别人(如:guava.jar)包中的 类 用到了,加入到了你自己的jar文件中,你用guava.jar具有这个类
pom
gid : 相当于你的
aid :
version :
scope : 没写默认是compile,-- runtime, compile, provided, test 代表不会 download 到本地。
answ : 面向接口编程,编码的时候只需要依赖 API 的包,等 runtime 的时候,实现就加载进来。
jdbc 编译的时候,没问题。你是面向接口编程。
API <---- JDBC.jar 接口
Mysql-Connect.jar 实现
PG-connect.jar 实现
runtime
compile
provide
test 只能在 test 中引用这个包中的类,在其他目录中是引用不到的。
servlet-api.jar 与 jdbc 那个例子很像,但是不是 runtime
tomcat7 实现 servlet3.0
tomcat6 不能完全支持 servlet3.0, provide 的意思是依赖容易给予提供的包
抽象出 parent-pom 第一是做管理,第二是做节省大家的重复度
每一个leader都要检查你的 pom.xml 是否符合规范
parent.pom 是 guava 13.0.1, 你想引用 15.0, 那么就类似要 overvide
* dependencies 是你项目真正的依赖
* properties 是常量
mvn package -p
parent pom
* 编译检查--检查重复类,重复包
* 公共依赖 : 每个项目每个人都依赖公司的
* 必须引用 : 每个项目都引用公司的 parent pom
(1), 重复包
Guava 也要依赖第三方,比如guava 15的版本依赖 A 包1.0,然后你自己的项目也间接依赖 A包1.1.此时编译成 war包的时候,你运行期??
answ : classload 不固定,要看 classload 的加载顺序。运行期,其实有可能出问题,...
解决方案是 : 将依赖树列出来,有重复的就不让过。
我们给别人发布jar包的时候,是不能有配置文件的。原因 : 比如你的jar包中有个 配置文件 XXX.xml, 然后用户也有可能有这个 XXX.xml 名字的。
(2), 重复类
你将别人(如:guava.jar)包中的 类 用到了,加入到了你自己的jar文件中,你用guava.jar具有这个类
pom
gid : 相当于你的
aid :
version :
scope : 没写默认是compile,-- runtime, compile, provided, test 代表不会 download 到本地。
answ : 面向接口编程,编码的时候只需要依赖 API 的包,等 runtime 的时候,实现就加载进来。
jdbc 编译的时候,没问题。你是面向接口编程。
API <---- JDBC.jar 接口
Mysql-Connect.jar 实现
PG-connect.jar 实现
runtime
compile
provide
test 只能在 test 中引用这个包中的类,在其他目录中是引用不到的。
servlet-api.jar 与 jdbc 那个例子很像,但是不是 runtime
tomcat7 实现 servlet3.0
tomcat6 不能完全支持 servlet3.0, provide 的意思是依赖容易给予提供的包
抽象出 parent-pom 第一是做管理,第二是做节省大家的重复度
每一个leader都要检查你的 pom.xml 是否符合规范
parent.pom 是 guava 13.0.1, 你想引用 15.0, 那么就类似要 overvide
* dependencies 是你项目真正的依赖
* properties 是常量
mvn package -p