eclipse 导入父子工程_springboot创建父子工程、聚合工程及问题解决

springboot创建父子工程、聚合工程

开发工具:IntellJ IDEA 2017

springboot创建父子工程、聚合工程及搭建框架过程中遇到的问题解决

项目名称

wyait父工程【父】:wyait-parent(用于统一依赖版本管理)

wyait通用工程【子】:wyait-common(统一保存通用工具类)

wyait-web工程【子】:wyait-web(聚合工程)

项目框架简述

wyait-web 项目框架设计简述:

wyait-web-pojo:保存pojo和entity实体类;

wyait-web-dao:数据访问层,与底层 MySQL进行数据交互(依赖pojo);

wyait-web-service:相对具体的业务逻辑服务层(依赖mapper/pojo);

wyait-web-controller:对访问控制进行转发,各类基本参数校验,或者不复用的业务简单处理等(依赖service/pojo);

wyait-web-webapp:项目启动Application类、配置类、静态资源文件(依赖controller/pojo)。

项目源码

注意,源码中没有提交空白目录,有些src/main/java/、src/main/resources/等目录需要大家手动创建!!!

初始技术依赖包括:

springboot

spring

mybatis

thymeleaf模版

redis

httpclient

oval校验

commons包

devTools热部署

静态资源配置(详见:MyWebMvcConfig类)

druid数据库连接池

pagehelper分页

log4j2

静态资源配置说明

MyWebMvcConfig类片段:

@Override

public void addResourceHandlers(ResourceHandlerRegistry registry) {

registry.addResourceHandler(“/css/**”).addResourceLocations(“/css/”);

registry.addResourceHandler(“/images/**”).addResourceLocations(“/images/”);

registry.addResourceHandler(“/js/**”).addResourceLocations(“/js/”);

//配置中的file:表示是一个具体的硬盘路径,其他的配置指的是系统环境变量

registry.addResourceHandler(“/img/**”).addResourceLocations(“file:D:/demo-images/”);

super.addResourceHandlers(registry);

}

注意:使用IntellJ IDEA开发工具时,有个问题,见文末。

RedisUtil

HttpService

httpClient操作,参考midd-common项目中HttpService类中的API方法,结果封装在HttpResult类中

搭建项目框架

wyait-parent(版本管理)

每个平台都有一个parent项目,用于项目依赖版本统一管理

创建wyait-parent项目

File-->new project-->maven:

next:输入maven坐标;

next:Project name: wyait-parent

Finish

删除src/目录。

项目结构如下:

导入依赖

注意:

springboot在创建单应用项目的时候,有默认的依赖;我们在自定义wyait-parent项目时,如果直接以springboot的parent作为wyait-parent项目的父依赖管理的话,子项目会由于存在两个parent而报错,无法导入依赖。

解决方案如下:

org.springframework.boot

spring-boot-dependencies

${spring.boot.version}

pom

import

使用spring-boot-dependencies依赖对springboot的依赖包进行统一管理。

maven项目的pom中的标签的含义,自行google、百度了解 //TODO

... ...

com.wyait.parent

wyait-parent

1.0.0

pom

UTF-8

UTF-8

1.7

4.3.13.RELEASE

1.5.9.RELEASE

1.3.1

1.1.5

1.2.3

3.6

2.5

1.86

org.springframework

spring-framework-bom

${springframework.version}

pom

import

org.springframework.boot

spring-boot-dependencies

${spring.boot.version}

pom

import

...

maven-compiler-plugin

1.7

1.7

wyait-common(通用工具类项目)

用于存放通用的工具类;

wyait-common项目,统一保存通用工具类

涉及到bean注入,需要在wyait-web的Application启动类中,添加注解:

@SpringBootApplication

//@ComponentScan用于配置扫描com.wyait.web之外的包下面的类

@ComponentScan(basePackages={"com.wyait"})

public class WyaitWebApplication {

public static void main(String[] args) {

SpringApplication sa=new SpringApplication(WyaitWebApplication.class);

// 禁用devTools热部署

//System.setProperty("spring.devtools.restart.enabled", "false");

// 禁用命令行更改application.properties属性

sa.setAddCommandLineProperties(false);

sa.run(args);

}

}

创建wyait-common

方法和创建wyait-parent一致,注意不删除src。

pom依赖

com.wyait.parent

wyait-parent

1.0.0

com.wyait.common

wyait-common

1.0.0

jar

...

org.springframework.boot

spring-boot-starter-test

test

org.springframework.boot

spring-boot-maven-plugin

wyait-web聚合工程

本demo为了方便,前期所有第三方依赖统一加在pom工程里面。比如:都放在wyait-web的pom文件中。上线前,再统一做调整,分别配置依赖。

建议前期就分配module各项目需要的依赖,避免引入不必要的。

创建wyait-web

操作和创建wyait-common一致。

pom依赖

项目内版本管理,通过配置properties实现;

引入通用工具项目wyait-common;

解决项目启动后,webapp/资源目录编译之后访问不到的问题。

...

com.wyait.web

wyait-web

${wyait.web.version}

pom

com.wyait.parent

wyait-parent

1.0.0

1.0.0

1.0.0

com.wyait.common

wyait-common

${wyait.common.version}

...

org.springframework.boot

spring-boot-starter-test

test

org.springframework.boot

spring-boot-maven-plugin

src/main/webapp

META-INF/resources

**/**

src/main/resources

true

**/*

创建wyait-web-pojo

选中pom项目wyait-web,右键:new --> module --> maven :

finish。

项目结构:

pom依赖

wyait-web

com.wyait.web

1.0.0

4.0.0

com.wyait.web.pojo

wyait-web-pojo

${wyait.web.version}

jar

创建wyait-web-service、wyait-web-dao、wyait-web-controller项目一样。pom依赖根据依赖关系,自行调整,详见源码。

创建wyait-web-webapp

方式一

第一种,创建方式和wyait-web-pojo一样;

创建项目完成后,另外需要几步操作:

新建src/main/webapp/文件目录,用于存放静态资源文件和页面;

src/main/java/目录下,新建包com.wyait.web和com.wyait.web.config,存放springboot启动Application类和相关配置类;

src/main/resources/目录下,保存application.properties、log4j2.xml等配置文件。

wyait-web-webapp项目架构如下:

注意:这里WEB-INF/下面多了一个web.xml文件,或在pom文件中添加一个maven-war-plugin插件配置,下文会说明原因。

方式二

第二种,在选择maven的时候,选中:Create from archetype,找到:maven-archetype-webapp,创建webapp项目;

然后调整项目结构和依赖和方式一一致即可。//TODO

方式三

第三种,New --> project --> Spring Initializr创建springboot项目 --> 调整项目结构和依赖和上面保持一致即可。//TODO

测试

新建controller类、静态文件和页面,详见源码!

启动测试:

IndexController中有midd-common项目中通用工具类的测试,也可自行编写测试

其他技术依赖。//TODO

项目安全

用户登录后,设置的cookie值token必须加密处理;

防止xss、sql注入等,后期统一处理。

项目检出

eclipse

以eclipse为例,找到SVN资源库,输入SVN地址,checkout:

检出后,查看项目结构如下:

选中其中的module项目,右键 --> import:

选择:Existing Maven Projects --> next --> finish;

就会导出module模块wyait-web-controller,其他模块操作一样。

运行:

在wyait-web-webapp项目src/main/java/com/wyait/web/目录下,使用 WyaitWebApplication类中的main方法启动项目。

也可配置tomcat启动,注意项目路径。//TODO

IntellJ IDEA

相比eclipse简单一些,主要在check out过程中,要注意聚合项目的目录层级结构(平行结构、父子结构)。//TODO

开发工具不同遇到的问题

eclipse和IntellJ IDEA开发工具不同遇到的问题。

使用IntellJ IDEA,必须在依赖中添加以下配置:

使用IDEA开发工具时,需要在wyait-web目录下,新建src/main/java、src/main/resources空白目录,否则启动时报错:

Caused by: java.lang.IllegalArgumentException: Folder 'D:\wyaitWorkspace\wyait-web\src\main\resources' must exist and must be a directory

加上即可解决;

使用IDEA开发工具时,注释下面的依赖:

使用IDEA开发时,为了配置静态资源文件放在webapp目录下,需要新增如下配置:

src/main/webapp

META-INF/resources

**/**

src/main/resources

true

**/*

项目package时的问题

wyait-web-webapp要打包为war时,项目src/main/webapp/WEB-INF/目录下,如果没有web.xml文件,打包会报错:找不到WEB-INF/web.xml.

... ...

[INFO] ------------------------------------------------------------------------

[INFO] BUILD FAILURE

[INFO] ------------------------------------------------------------------------

[INFO] Total time: 30.266 s

[INFO] Finished at: 2018-07-18T11:37:05+08:00

[INFO] Final Memory: 19M/184M

[INFO] ------------------------------------------------------------------------

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war (default-war) on project mdd-admin: Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode) -> [Help 1]

[ERROR]

[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.

[ERROR] Re-run Maven using the -X switch to enable full debug logging.

[ERROR]

解决方案

方案一:在项目WEB-INF/目录下新建一个web.xml文件,用于项目package时使用,无其他用途。

web.xml文件不需要增加任何配置,内容如下:

/p>

"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

"http://java.sun.com/dtd/web-app_2_3.dtd" >

Archetype Created Web Application

方案二【推荐】:在pom.xml中添加依赖:

注意Failed失败中,maven-war-plugin的版本为2.2。所以pom中配置的插件版本要对应一样。

org.apache.maven.plugins

maven-war-plugin

2.2

false

相关文章链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值