SSM=Maven构建项目以及Maven分模块构建项目

一.软件开发常识

(1)项目开发流程

1. 立项
    项目可实施性分析:(某项目)100W项目,开发周期预计6个月,需要10人,运营(人力)成本2W/人
    产品经理入住银行,进行需求调研《需求设计说明书》
    需求研讨会:团队所有成员参加

2. 设计
    UI/UE工程师:《页面原型》
    架构师:统一开发环境,项目技术选项,项目架构设计,数据库设计等等《概要设计说明书》
    产品经理:接口规范、方法规范、参数规范、步骤要求等等《详细设计说明书》

3. 开发
    coding(编码),码农

4. 测试
    白盒测试:代码逻辑和性能
    黑盒测试:用户体验
    灰盒测试:黑+白

5. 部署
    运维人员产品部署上传维护....

(2)UML统一建模语言

统一建模语言(UML,UnifiedModelingLanguage)是面向对象软件的标准化建模语言。

简单来说:通过一些专业化的图形,直观的展示项目需求(用例图、时序图、类图)等等。

用例图: user case

  • 图形化的形式展示项目中的所有功能,以及功能的参与者

设计工具PowerDesigner(PD)

  • 绘制用例图、数据库等

(3)开发环境:

jdk版本1.8

maven版本:3.5.2

mysql版本:5.7

(4)创建新的工作空间

SSM=Maven构建项目以及Maven分模块构建项目_第1张图片

设置sdk,以及其他:

SSM=Maven构建项目以及Maven分模块构建项目_第2张图片

整体项目编码的设置

SSM=Maven构建项目以及Maven分模块构建项目_第3张图片

maven的设置

SSM=Maven构建项目以及Maven分模块构建项目_第4张图片

 

二.Maven:

(1)基础回顾

Maven项目管理工具

依赖管理,项目构建

SSM=Maven构建项目以及Maven分模块构建项目_第5张图片

 

(2)Maven的依赖传递

什么是依赖传递

在maven中,依赖是可以传递的,假设存在三个项目,分别是项目A,项目B以及项目C。假设A依赖B,B依赖C,那么我们可以根据maven项目依赖的特征不难推出项目A也依赖C。

SSM=Maven构建项目以及Maven分模块构建项目_第6张图片

SSM=Maven构建项目以及Maven分模块构建项目_第7张图片

如果我们项目直接依赖的坐标过多,可能就会产生版本冲突问题:

SSM=Maven构建项目以及Maven分模块构建项目_第8张图片

 

(3) 如何解决依赖冲突问题?

 1.依赖调节原则:

第一声明优先原则:

在 pom 文件中定义依赖,谁先声明就用谁

SSM=Maven构建项目以及Maven分模块构建项目_第9张图片

 

路径近者优先原则

在pom 文件中定义依赖,谁的路径近就用谁

SSM=Maven构建项目以及Maven分模块构建项目_第10张图片

SSM=Maven构建项目以及Maven分模块构建项目_第11张图片

 

2.排除依赖

通过在pom文件中排除不需要的依赖jar包

SSM=Maven构建项目以及Maven分模块构建项目_第12张图片

3.版本锁定

在pom文件中,直接指定项目依赖的所有版本号,导入依赖的时候就不需要指定版本

  1. properties中定义所有的公共版本号常量

  2. 通过dependencyManagement锁定版本号:不会导入依赖jar包

  3. dependencies导入依赖:不需要指定版本号

SSM=Maven构建项目以及Maven分模块构建项目_第13张图片



    5.2.5.RELEASE
    4.12



    
        
            org.springframework
            spring-context
            ${spring.version}
        
        
            org.springframework
            spring-webmvc
            ${spring.version}
        
        
            junit
            junit
            ${junit.version}
        
    




    
        org.springframework
        spring-context
    
    
        org.springframework
        spring-webmvc
    
    
        junit
        junit
    

三.Maven构建ssm项目

基于maven构建ssm工程,规范依赖管理。场景:查询所有企业信息

(1)创建数据库

(2)创建web模块“

SSM=Maven构建项目以及Maven分模块构建项目_第14张图片

(3)导入相关依赖:


    
        5.0.5.RELEASE
        5.0.5.RELEASE
        3.4.5
    

    
    
        
            
            
                org.mybatis
                mybatis
                ${mybatis.version}
            

            
            
                org.springframework
                spring-webmvc
                ${springmvc.version}
            


            
            
                org.springframework
                spring-aspects
                ${spring.version}
            

            
                org.springframework
                spring-context-support
                ${spring.version}
            
            
                org.springframework
                spring-test
                ${spring.version}
            
            
                org.springframework
                spring-jdbc
                ${spring.version}
            
            
                org.springframework
                spring-tx
                ${spring.version}
            
        
    
    
    
    
        
        
            org.mybatis
            mybatis
        
        
            org.mybatis
            mybatis-spring
            1.3.1
        

        
        
            mysql
            mysql-connector-java
            5.1.32
        

        
        
            com.alibaba
            druid
            1.0.9
        

        
        
            org.springframework
            spring-webmvc
        

        
        
            org.springframework
            spring-aspects
        

        
            org.springframework
            spring-context-support
        
        
            org.springframework
            spring-test
        
        
            org.springframework
            spring-jdbc
        
        
            org.springframework
            spring-tx
        
        
        
            junit
            junit
            4.12
        

        
            javax.servlet
            servlet-api
            2.5
            provided
        

        
            javax.servlet
            jsp-api
            2.0
            provided
        

        
        
            javax.servlet
            jstl
            1.2
        
		
		
            org.projectlombok
            lombok
            1.18.6
        
    

    
        
        
        
            org.apache.maven.plugins
            maven-compiler-plugin
            3.1
            
                1.8
                1.8
                UTF-8
            
        
        
    

注意:自动导入

SSM=Maven构建项目以及Maven分模块构建项目_第15张图片

(3)搭建MyBatis

Company实体类:

@Data
public class Company implements Serializable {

    private String id; // 企业id
    private String name; // 企业名称
    private Date expirationDate;  //到期时间
    private String address; // 企业地址
    private String licenseId; // 营业执照编号
    private String representative; // 法人代表
    private String phone; // 手机号
    private String companySize; // 企业规模
    private String industry; // 行业
    private String remarks; // 备注
    private Integer state; // 状态
    private Double balance; // 余额
    private String city; // 城市
}

CompanyDao接口和映射文件

public interface CompanyDao {
  
    // 查询所有
    List findAll();
}

同时在resources文件夹创建映射文件“





    
        
        
        
        
        
    

    

spring整合MyBatis

SSM=Maven构建项目以及Maven分模块构建项目_第16张图片

jdbc.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/saas?characterEncoding=utf-8&useSSL=false
jdbc.username=root
jdbc.password=root

applicationContext-dao.xml




    
    

    
        
        
        
        
    

    
    
        
        
        
    

    
    
        
    

测试:

@RunWith(SpringRunner.class)
@ContextConfiguration("classpath:spring/applicationContext-dao.xml")
public class MyBatisTest {

    @Autowired
    private CompanyDao companyDao;

    @Test
    public void testFindAll()throws Exception{
        List list = companyDao.findAll();
        System.out.println(list);
    }
}

 

(4)搭建spring

CompanyService接口和实现

public interface CompanyService {
    
    // 查询所有
    List findAll();
}

SSM=Maven构建项目以及Maven分模块构建项目_第17张图片

applicationContext-service.xml





    
    



applicationContext-tx.xml





    
    
    
        
    
    
    
        
            
            
            
            
            
        
    
    
    
        
        
    

测试:

@RunWith(SpringRunner.class)
@ContextConfiguration("classpath:spring/applicationContext-*.xml")
public class SpringTest {

    @Autowired
    private CompanyService companyService;

    @Test
    public void testFindAll()throws Exception{
        List list = companyService.findAll();
        System.out.println(list);
    }
}

 

(5)搭建SpringMVC

1.页面资源导入“

SSM=Maven构建项目以及Maven分模块构建项目_第18张图片

2.CompanyController和页面

@Controller
@RequestMapping(value = "/company", name = "企业管理")
public class CompanyController {

    @Autowired
    private CompanyService companyService;

    @RequestMapping(value = "/list", name = "查询列表")
    public String list(HttpServletRequest request) {
        List list = companyService.findAll();
        request.setAttribute("list", list);
        return "company/company-list";
    }
}

SSM=Maven构建项目以及Maven分模块构建项目_第19张图片

3.spring-mvc.xml





    
    

    
    


    
    
        
        
    

4.web.xml

前端控制器,过滤器,监听器



	
	
		springmvc
		org.springframework.web.servlet.DispatcherServlet
		
		
			contextConfigLocation
			classpath:spring/spring-mvc.xml
		
		4
	

	
		springmvc
		*.do
	

	
	
		contextConfigLocation
		
		classpath*:spring/applicationContext-*.xml
	
	
		org.springframework.web.context.ContextLoaderListener
	



	
	
		CharacterEncodingFilter
		org.springframework.web.filter.CharacterEncodingFilter
		
			encoding
			utf-8
		
	
	
		CharacterEncodingFilter
		/*
	

5.部署测试

SSM=Maven构建项目以及Maven分模块构建项目_第20张图片

完整的项目结构见开始

 

四.Maven分模块构建:

什么是分模块构建

SSM=Maven构建项目以及Maven分模块构建项目_第21张图片

常见的拆分方式有两种:

  • 按照业务模块进行拆分,每个模块拆分成一个maven工程,例如将一个项目分为用户模块、订单模块、购物车模块等,每个模块对应就是一个maven工程

  • 按照进行拆分,例如持久层、业务层、表现层等,每个层对应就是一个maven工程

不管是上面哪种拆分方式,通常都会提供一个父工程,将一些公共的代码和配置提取到父工程中进行统一管理和配置。

SSM=Maven构建项目以及Maven分模块构建项目_第22张图片

(1)Maven工程继承

在Java语言中,类之间是可以继承的,通过继承,子类就可以引用父类中非private的属性和方法。

同样,在maven工程之间也可以继承,子工程继承父工程后,就可以使用在父工程中引入的依赖。继承的目的是为了消除重复代码

创建父工程

SSM=Maven构建项目以及Maven分模块构建项目_第23张图片

创建子模块

SSM=Maven构建项目以及Maven分模块构建项目_第24张图片

SSM=Maven构建项目以及Maven分模块构建项目_第25张图片

(2)Maven工程聚合

在maven工程的pom.xml文件中可以使用标签将其他maven工程聚合到一起,聚合的目的是为了进行统一操作

注意,不是子工程也可以聚合在一起,统一管理...

SSM=Maven构建项目以及Maven分模块构建项目_第26张图片

一般情况下,父工程都会作为聚合工程,管理自己的子模块...

SSM=Maven构建项目以及Maven分模块构建项目_第27张图片

 

五.分模块构建SSM工程

改造刚才的ssm工程为分模块开发

SSM=Maven构建项目以及Maven分模块构建项目_第28张图片

(1)创建一个父工程

SSM=Maven构建项目以及Maven分模块构建项目_第29张图片

SSM=Maven构建项目以及Maven分模块构建项目_第30张图片

(2)export_commons

SSM=Maven构建项目以及Maven分模块构建项目_第31张图片

SSM=Maven构建项目以及Maven分模块构建项目_第32张图片

(3)export_domain

SSM=Maven构建项目以及Maven分模块构建项目_第33张图片

(4) export_dao

SSM=Maven构建项目以及Maven分模块构建项目_第34张图片

(5)export_system_dao

SSM=Maven构建项目以及Maven分模块构建项目_第35张图片

(6)export_manager_web

SSM=Maven构建项目以及Maven分模块构建项目_第36张图片

SSM=Maven构建项目以及Maven分模块构建项目_第37张图片

子模块之间的传递依赖思想

SSM=Maven构建项目以及Maven分模块构建项目_第38张图片

SSM=Maven构建项目以及Maven分模块构建项目_第39张图片

测试:

同样配置服务器部署

SSM=Maven构建项目以及Maven分模块构建项目_第40张图片

 

 

六.Maven私服

说明:

maven仓库分为本地仓库和远程仓库,而远程仓库又分为maven中央仓库、其他远程仓库和私服。

maven私服就是公司局域网内的maven远程仓库,每个员工的电脑上安装maven软件并且连接maven私服,程序员可以将自己开发的项目打成jar并发布到私服,其它项目组成员就可以从私服下载所依赖的jar。私服还充当一个代理服务器的角色,当私服上没有jar包时会从maven中央仓库自动下载。

例如:进入企业开发,不同的项目组开发不同的工程

  • A团队:export_dao工程开发完毕,发布到私服。

  • B团队:export_system_service从私服下载export_dao

SSM=Maven构建项目以及Maven分模块构建项目_第41张图片

(1)nexus 搭建私服环境

nexus 是一个maven仓库管理器(其实就是一个软件),nexus可以充当maven私服,同时nexus还提供强大的仓库管理、构件搜索等功能

- 下载:
	http://www.sonatype.org/nexus/archived/
	
- 安装:
	1.解压:nexus-2.14.10-01-bundle.zip
	2.进入解压后的bin目录,打开cmd窗口
	3.执行nexus.bat install
		注意:需要以管理员身份运行cmd命令
	
- 卸载:
	cmd进入bin目录执行nexus.bat uninstall
		注意:需要以管理员身份运行cmd命令
		
- 启动:
	方式一:cmd进入bin目录,执行nexus.bat start
	方式二:在Windows系统服务中启动nexus
	
- 访问:
	http://localhost:8081/nexus
		用户名:admin
		密码:admin123

 

(2)仓库类型

通过前面的仓库列表可以看到,nexus默认内置了很多仓库,这些仓库可以划分为4种类型,每种类型的仓库用于存放特定的jar包,具体说明如下:

1. hosted,宿主仓库
	部署自己的jar到这个类型的仓库,包括Releases和Snapshots两部分
		Releases为公司内部发布版本仓库、 Snapshots为公司内部测试版本仓库 

2. proxy,代理仓库
	用于代理远程的公共仓库,如maven中央仓库,用户连接私服,私服自动去中央仓库下载jar包或者插件

3. group,仓库组
	用来合并多个hosted/proxy仓库,通常我们配置自己的maven连接仓库组

4. virtual(虚拟):兼容Maven1版本的jar或者插件

SSM=Maven构建项目以及Maven分模块构建项目_第42张图片

 

(3)将项目发布到私服

在maven的setting.xml文件中配置:

SSM=Maven构建项目以及Maven分模块构建项目_第43张图片


    releases
    admin
    admin123


    snapshots
    admin
    admin123

SSM=Maven构建项目以及Maven分模块构建项目_第44张图片

在需要发布工程的pom.xml文件中配置:


    
        releases
        http://localhost:8081/nexus/content/repositories/releases/
    
    
        snapshots
        http://localhost:8081/nexus/content/repositories/snapshots/
    

SSM=Maven构建项目以及Maven分模块构建项目_第45张图片

在需要发布的工程执行deploy

在部署之前,一定要安装到本地仓库,才能上传到私服

SSM=Maven构建项目以及Maven分模块构建项目_第46张图片

SSM=Maven构建项目以及Maven分模块构建项目_第47张图片

 

(4)从私服下载jar包

在maven的setting.xml文件中配置


    dev
    
        
            nexus
            
            
                http://localhost:8081/nexus/content/groups/public/
            
            
                true
            
            
            
                true
            
        
    
    
        
        
            public
            Public Repositories
            
                http://localhost:8081/nexus/content/groups/public/
            
        
    

激活


    dev

SSM=Maven构建项目以及Maven分模块构建项目_第48张图片

注意,要想实现私服的下载,必须先删除本地仓库jar包.

 

资料:

私服搭建:https://www.cnblogs.com/knowledgesea/p/11190579.html

https://blog.csdn.net/gyshun/article/details/79297460

maven分模块搭建项目:https://blog.csdn.net/javanotes/article/details/81128020

你可能感兴趣的:(JavaEE高级)