快速入门Maven(三)
来源:互联网 发布:mac打不开应用程序 编辑:程序博客网 时间:2024/06/06 07:23
一、整合ssh框架的Maven项目
1.传递依赖
只添加了一个struts2-core依赖,发现项目中出现了很多jar,
这种情况叫 依赖传递
2.依赖版本冲突的解决
(1)第一声明优先原则(就是谁写在前面一点就用谁)
<dependencies> <!-- spring-beans-4.2.4 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.2.4.RELEASE</version> </dependency> <!-- spring-beans-3.0.5 --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-spring-plugin</artifactId> <version>2.3.24</version> </dependency>
(2)路径近者优先原则(如果我们直接对项目添加一个依赖项,而该依赖项是之前其他依赖项的传递依赖 项,那么直接依赖项会被导入而传递依赖项不会导入。)
如自己添加jar包
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>4.2.4.RELEASE</version> </dependency>
(3)排除原则(排除一个不需要的依赖jar)
使用eclipse 提供的工具,在pom.xml的dependency hierarchy视图下,选中自己需要排 除的冲突jar包,右键点击之后选择exclude artifact。这样做的结果就是将需要排除的jar在使用<exclusions>标签标注(包裹)。
<exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> </exclusion> </exclusions>
(4)版本锁定原则(指明一定要哪个版本的jar,其它版本屏蔽)
<!-- 锁定版本,一定要spring-beans的4.2.4.RELEASE --><dependencyManagement><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>4.2.4.RELEASE</version></dependency></dependencies></dependencyManagement>上面这种直接指定数字的太不灵活,可以采用引用变量的方式
<properties><spring.version>4.2.4.RELEASE</spring.version><hibernate.version>5.0.7.Final</hibernate.version><struts.version>2.3.24</struts.version></properties><!-- 锁定版本,struts2-2.3.24、spring4.2.4、hibernate5.0.7 --><dependencyManagement><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency></dependencies></dependencyManagement>
3.编写Pom.xml文件
这个Pom文件如果要自己写的话 要写很久,实际上百度一下 “ssh pom” 或者“ssm pom”复制粘贴过来,再修改里面所需的版本和一点点几分钟改改就行了。能看懂就行,自己写很浪费没必要的时间。
二、分模块开发
1.Maven多模块项目,适用于一些比较大的项目,通过合理的模块拆分,实现代码的复用,便于维护和管理。尤其是一些开源框架,也是采用多模块的方式,提供插件集成,用户可以根据需要配置指定的模块。
比如项目结构如下:
test-hd-parent (父级)
---pom.xml
---test-hd-api (第三方接口层)
----pom.xml
---test-hd-foundation (基础工具层)
----pom.xml
---test-hd-resource (资源层)
----pom.xml
---test-hd-service (逻辑业务层)
----pom.xml
---test-hd-modules (web层)
----pom.xml
---test-hd-www (web模块1)
----pom.xml
---test-hd-admin (web模块2)
----pom.xml
2.依次创建父工程、dao层子模块、service层子模块等等
(1)创建父工程:
创建出的父工程如下:
整个项目所有的依赖都放在父工程的Pom里(如下ssh项目的所有依赖放在这个父工程的pom里):
<!-- 属性 --><properties><spring.version>4.2.4.RELEASE</spring.version><hibernate.version>5.0.7.Final</hibernate.version><struts.version>2.3.24</struts.version></properties><!-- 锁定版本,struts2-2.3.24、spring4.2.4、hibernate5.0.7 --><dependencyManagement><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId><version>${hibernate.version}</version></dependency><dependency><groupId>org.apache.struts</groupId><artifactId>struts2-core</artifactId><version>${struts.version}</version></dependency><dependency><groupId>org.apache.struts</groupId><artifactId>struts2-spring-plugin</artifactId><version>${struts.version}</version></dependency></dependencies></dependencyManagement><!-- 依赖管理 --><dependencies><!-- spring --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId></dependency><!-- hibernate --><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId></dependency><!-- 数据库驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.6</version><scope>runtime</scope></dependency><!-- c3p0 --><dependency><groupId>c3p0</groupId><artifactId>c3p0</artifactId><version>0.9.1.2</version></dependency><!-- 导入 struts2 --><dependency><groupId>org.apache.struts</groupId><artifactId>struts2-core</artifactId></dependency><dependency><groupId>org.apache.struts</groupId><artifactId>struts2-spring-plugin</artifactId></dependency><!-- servlet jsp --><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jsp-api</artifactId><version>2.0</version><scope>provided</scope></dependency><!-- 日志 --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.2</version></dependency><!-- junit --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.9</version><scope>test</scope></dependency><!-- jstl --><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency></dependencies><build><plugins><!-- 设置编译版本为1.7 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.7</source><target>1.7</target><encoding>UTF-8</encoding></configuration></plugin><!-- maven内置 的tomcat6插件 --><plugin><groupId>org.codehaus.mojo</groupId><artifactId>tomcat-maven-plugin</artifactId><version>1.1</version><configuration><!-- 可以灵活配置工程路径 --><path>/ssh</path><!-- 可以灵活配置端口号 --><port>8080</port></configuration></plugin></plugins></build>(2)创建dao子模块
在ssh-parent项目上右击 ,创建时选择 Maven Module
填写子模块名称ssh-dao
接下来在这里面写dao相关的代码和配置信息即可
(3)创建service子模块
和上一步一样。
3.分模块开发中的问题
1.父工程和子模块 以及 子模块之间都有互相依赖的关系(比如Service模块肯定会用到Dao模块),那么在各自创建完成之后,及时发布到本地仓库,大家要用都从本地仓库中取。
那么Service 和Dao都要被引用,那么创建的时候选Packaging就以jar包的方式创建。这样Service要用dao的时候就直接从本地仓库拿到dao的jar。web要用service的时候同理
然而子模块web创建时要选择war,因为是个web项目,也不需要给其它的依赖。
一句话:打成jar方式 是为了其它的模块依赖。
三、私服(自己的远程仓库)
需要使用nexus软件。(略)
- 快速入门Maven(三)
- Maven快速入门 (一)
- 快速入门Maven(一)
- Struts快速入门(三)
- Struts快速入门(三)
- Struts快速入门(三)
- Struts快速入门(三)
- Firebug快速入门(三)
- Delphi快速入门(三)
- TinyXml快速入门(三)
- TinyXml快速入门(三)
- Delphi快速入门(三)
- TinyXml快速入门(三)
- TimesTen快速入门(三)
- TinyXml快速入门(三)
- TinyXml快速入门(三)
- ibatis快速入门(三)
- TinyXml快速入门(三)
- linux安装软件和卸载的几种方法
- 脱壳工具
- Android获取硬件设备信息
- Qt:在树莓派中封装wiringPi中断
- HP T5740安装LEDE路由
- 快速入门Maven(三)
- Java实现app接口和Socket消息传递(1)Win10安装Tomcat9
- NOIP2017普及组题解
- 微信公众号取消关注事件要做的处理,php开发公众号
- 06java基础之集合
- 软工文档感受----计划
- 使用sublime 同步编辑从excel导入数据到SQL Server数据库
- Ubuntu下安装Java及环境配置
- 赋予oracle执行存储过程权限和创建表权限