Maven分模块开发&私服
一、Maven的项目开发(整合SSH框架练习)
1. 新建Maven Project项目
2. 在pom.xml中添加依赖,导入三大框架所有所需的jar包
这里,按Spring >>> Hibernate >>> Struts2 的顺序来添加依赖较好
3. 从Hibernate --- Action 完成开发
1. Hibernate的ORM 数据库表,持久化类,映射文件。 以cst_customer,Customer,Customer.hbm.xml为例
2. Spring 配置文件 , 完全整合 Hibernate
3. 动作类Action类,编写struts.xml,完全整合到applicationContext.xml中
4. web.xml 完成 Spring核心监听器,延迟加载机制及Struts2的前端控制器的配置
1.1 Maven - pom.xml
导入三大框架所需jar包
有两种方式,一个是手动一个一个的添加依赖,一个是直接复制pom.xml中的配置:
- 手动添加
从Spring - Hibernate - Struts2 - 其它 的顺序添加依赖。
Spring:
spring-context : (导入的依赖jar包有:)
context,core,bean,expression . spring-aop,aopaliance,logging 4+3个包。
spring-aspects :
aspectjweaver,spring-aspectj 2个包。
spring-orm :
orm,jdbc,tx 3个包。
spring-test :
test 1个包
spring-web :
web 1个包
共14个包。
-------------------------------------------------------------------------------
Hibernate:
hibernate-core:(新添加的jar包:)
antlr,dom4j,geronimo-jta,hibernate-commons-annotations,hibernate-core,hibernate-jpa,
jandex,javassist,jboss,xml-api 10个包
![img22.png](http://upload-images.jianshu.io/upload_images/5303154-c098a56b87173cd8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
mysql :
mysql-connector 1个包
c3p0 :
c3p0 1个包
共12个包。
-------------------------------------------------------------------------------
Struts2 :36
strut2-core :
struts-core,xwork-core,commons-lang,ognl,asm,commons-fileupload,commons-io,freemark,javasist 3.11等
struts2-spring-plugin :
-------------------------------------------------------------------------------
其他:
servlet-api:
jsp-api:
junit:
slf4j-log4j12:
jstl
-------------------------------------------------------------------------------
org.apache.maven.plugins
maven-compiler-plugin
1.7
UTF-8
org.apache.tomcat.maven
tomcat7-maven-plugin
2.2
/ssh
8080
UTF-8
2. 直接上网拷贝pom.xml中的内容【使用这一种】
开发效率高,不容易出错。使用版本锁定等方式,有效解决版本冲突的问题:
4.2.4.RELEASE
5.0.7.Final
2.3.24
org.springframework
spring-context
${spring.version}
org.springframework
spring-aspects
${spring.version}
org.springframework
spring-orm
${spring.version}
org.springframework
spring-test
${spring.version}
org.springframework
spring-web
${spring.version}
org.hibernate
hibernate-core
${hibernate.version}
org.apache.struts
struts2-core
${struts.version}
org.apache.struts
struts2-spring-plugin
${struts.version}
org.springframework
spring-context
org.springframework
spring-aspects
org.springframework
spring-orm
org.springframework
spring-test
org.springframework
spring-web
org.hibernate
hibernate-core
mysql
mysql-connector-java
5.1.6
runtime
c3p0
c3p0
0.9.1.2
org.apache.struts
struts2-core
org.apache.struts
struts2-spring-plugin
javax.servlet
servlet-api
2.5
provided
javax.servlet
jsp-api
2.0
provided
org.slf4j
slf4j-log4j12
1.7.2
junit
junit
4.9
test
javax.servlet
jstl
1.2
org.apache.maven.plugins
maven-compiler-plugin
1.7
UTF-8
org.codehaus.mojo
tomcat-maven-plugin
1.1
/ssh
8080
1.2 三大框架配置文件的整合
与之前的整合一致,区别是:
1. Customer.hbm.xml的hibernate的映射文件需要放到src/main/resources目录下,与src/main/java目录下实体类Customer的路径必须一致。
其它配置文件如applicationContext.xml,struts.xml,db.properties放在src/main/resouces根目录下
2. Spring的核心配置文件整合hibernate
与之前的区别是:
sessionFactory的bean中,加载映射文件使用 mappingLocations。
这样可以使用classpath:classpath:com/itdream/entity/*.hbm.xml
=============================================================================
applicationContext.xml :
org.hibernate.dialect.MySQL5Dialect
true
true
none
classpath:com/itdream/entity/*.hbm.xml
struts.xml:
/list.jsp
web.xml:
org.springframework.web.context.ContextLoaderListener
contextConfigLocation
classpath:applicationContext.xml
OpenSessionInView
org.springframework.orm.hibernate5.support.OpenSessionInViewFilter
OpenSessionInView
/*
Struts
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
Struts
/*
db.properties:
jdbc.dataSource=com.mchange.v2.c3p0.ComboPooledDataSource
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/maven
jdbc.username=root
jdbc.password=root
log4j.properties:
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### direct messages to file mylog.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=d:\\mylog.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### set log levels - for more verbose logging change 'info' to 'debug' ###
log4j.rootLogger=info, stdout,file
具体实现省略。
二、 Maven实现模块开发
2.1 父工程maven-parent
新建Maven工程(Project),打包方式选择pom.
在父工程中添加依赖:
4.2.4.RELEASE
5.0.7.Final
2.3.24
org.springframework
spring-context
${spring.version}
org.springframework
spring-aspects
${spring.version}
org.springframework
spring-orm
${spring.version}
org.springframework
spring-test
${spring.version}
org.springframework
spring-web
${spring.version}
org.hibernate
hibernate-core
${hibernate.version}
org.apache.struts
struts2-core
${struts.version}
org.apache.struts
struts2-spring-plugin
${struts.version}
org.springframework
spring-context
org.springframework
spring-aspects
org.springframework
spring-orm
org.springframework
spring-test
org.springframework
spring-web
org.hibernate
hibernate-core
mysql
mysql-connector-java
5.1.6
runtime
c3p0
c3p0
0.9.1.2
org.apache.struts
struts2-core
org.apache.struts
struts2-spring-plugin
javax.servlet
servlet-api
2.5
provided
javax.servlet
jsp-api
2.0
provided
org.slf4j
slf4j-log4j12
1.7.2
junit
junit
4.9
test
javax.servlet
jstl
1.2
org.apache.maven.plugins
maven-compiler-plugin
1.7
UTF-8
org.apache.tomcat.maven
tomcat7-maven-plugin
2.2
8080
/maven
UTF-8
发布到本地仓库(install)
2.2 创建子模块maven-dao
在父工程上new一个Maven模块(module),打包方式选择jar.以供service依赖。
以Customer查询所有客户findAll为例:实现类具体代码省略,主要展示配置文件的思路。
1. 如果需要测试,在pom.xml中添加依赖 Junit.jar
2. 实体类与映射文件的编写:略, 与以往不同的是注意它们放置在Maven工程中的位置,且它们所在的包结果要一致。
3. applicationContext-dao.xml(整合hibernate) :
org.hibernate.dialect.MySQL5Dialect
true
true
none
classpath:com/itdream/maven/dao/Customer.hbm.xml
这里与以前的配置不同的是,加载hibernate映射文件改为了mappingLocations,以前是mappingResources,改为Locations后可以使用通配符。
db.properties:
jdbc.dataSource=com.mchange.v2.c3p0.ComboPooledDataSource
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/maven
jdbc.username=root
jdbc.password=root
-----------------------------------------------------------------------------
完成dao层的代码实现。
4. 发布到本地仓库,以供后面service层使用(企业中发布到私服供service团队使用)
2.3 子模块maven-service
1. 新建子模块maven-service,继承父工程,打包方式选择jar,以供web层依赖使用。
2. pom.xml中添加maven-dao依赖.如果需要测试,添加依赖Junit
3. 编写applicationContext-service.xml,完成Spring的事务管理及service的bean注册。
完成service层的代码实现。
4. 发布到本地仓库。
2.4 子模块maven-action
1. 新建子模块maven-action,这里打包方式选择 war .
2. 添加依赖maven-service,如果需要测试,添加Junit依赖。
3. 编写配置文件applicationContext-action.xml及struts.xml
struts.xml:
/list.jsp
applicationContext-action.xml:
完成页面及Action代码实现。
4. 修改web.xml。
1. 在运行web程序时,Spring监听器扫描web依赖的jar包中所有的applicationContext-*.xml.
2. Spring延迟加载机制
3. Struts的前端控制器
org.springframework.web.context.ContextLoaderListener
contextConfigLocation
classpath*:applicationContext-*.xml
OpenSessionInView
org.springframework.orm.hibernate5.support.OpenSessionInViewFilter
OpenSessionInView
/*
Struts
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
Struts
/*
分模块开发完成。
三、 私服的安装,上传jar(子模块)及下载jar
3.1 nexus的安装
http://www.sonatype.org/nexus/archived/
下载后解压即可。
进入到解压后的nexus的bin目录:
D:\Develop\maven\nexus\nexus-2.12.0-01\bin
dos窗口执行nexus install完成安装。 如要卸载,nexus.bat uninstall.
开启nexus服务:
nexus.bat start
3.2 上传子模块到私服
1. 首先必须有安装Maven,在Maven的配置文件setting中添加访问私服的账号密码。
添加到settings.xml中
releases
admin
admin123
snapshots
admin
admin123
2. 在要上传的模块的pom.xml中配置上传的私服的路径地址。
添加到pom.xml中
releases
http://localhost:8081/nexus/content/repositories/releases/
snapshots
http://localhost:8081/nexus/content/repositories/snapshots/
修改的就是上传到私服的路径为公司的ip地址.
3. 上传到私服。
右键Run as 选择Maven build...,输入deploy上传。
3.3 下载子模块或jar包到本地仓库
需要连接私服。在配置了账号密码的基础上,配置要从哪个私服仓库下载。
到了不同公司要修改的是仓库地址的ip为公司私服的ip地址。
添加到settings.xml中
dev
nexus
http://localhost:8081/nexus/content/groups/public/
true
true
public
Public Repositories
http://localhost:8081/nexus/content/groups/public/
2. 激活定义的仓库。
dev