企业开发项目【1】— — 流程、开发环境搭建模板
以黑马的学成在线为例
1 项目背景
2 项目介绍
3 开发环境搭建
3.1 开发工具配置(后端)
3.1.1 Idea配置
- 环境编码
- 编译级别配置
project structure - 设置JDK版本和编译级别
3. 自动导包设置
IDEA可以自动优化导入包,但是有多个同名的类调用不同的包,必须自己手动Alt+Enter设置,
下面可以通过设置来进行导包优化。
4. 设置代码注释模板
不同公司对于注释有不同的要求
/**
* @description TODO
* @author ${USER}
* @date ${DATE} ${TIME}
* @version 1.0
*/
- 配置方法模板
- 打开模板:
- 新增模板组:
- 在分组下添加代码模板:
- 点击“Change”,选择Java下的所有项目
- 填写模板内容
**
* @description TODO
* $params$
* @return $return$
* @author $user$
* @date $data$ $time$
*/
- 点击Edit Variables编辑模板中用的变量
对于params方法的参数需要填写脚本,如下
groovyScript("if(\"${_1}\".length() == 2) {return '';}
else {
def result='';
def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList();
for(i = 0; i < params.size(); i++) {
if(i==0){result+='@param ' + params[i] + ' '}
else{result+='\\n' + ' * @param ' + params[i] + ' '}};
return result;}", methodParameters()
);
3.1.2 Maven配置
下载好maven并配置好环境变量
- 配置仓库环境
maven安装路径的conf目录中的setting文件中
本地仓库:
中央仓库:
- idea中配置maven
配置maven安装目录及本地仓库的位置
File --> Settings --> Build --> Build Tools --> Maven
上图解释:
注释①:设置自己的maven路径(maven的根目录)
注释②:配置maven的settings文件的位置
注释③:配置maven的仓库位置
3.1.3 gogs(gitlab)配置【一般由PM来做】
Gogs和GitHub、GitLab一样都是Git托管平台,Gogs相比它
们两者更轻量。Gogs的官网地址:https://gogs.io/
【企业中多用GitLab】
访问自己搭建好的gogs地址(
http://192.168.101.65:10880
)
使用gogs/gogs账号登录gogs平台
- 创建组织
该组织通常以项目名命名,填写组织名称。
- 创建成功,进入管理面板修改组织信息
- 修改成功,进入首页点击组织名称
- 进入组织首页,选择创建团队
假如创建研发团队,填写团队名称
选择权限等级,注意:这里即使选择了权限等级也需要在仓库管理中去管理协作者的权限。
团队创建成功
5. 创建成员账号
首先在用户管理中添加账号分配给成员
添加成员
6. 团队和组织创建完成,下边创建仓库,进入组织,创建仓库
项目创建成功:
7. 配置使用仓库的人员
添加协作者,将团队成员的账号添加为协作者。
添加完成注意分配权限,如下图,通常测试人员为读取权限,开发人员为读写权限。
团队Leader需要将初始代码上传至Git仓库,团队成员通过Idea克隆一份项目代码,通过此仓库进行协 作开发。
3.1.4 个人git配置
- idea配置git
- 直接从远程拉取并创建项目
- 远程项目地址:
- idea直接通过地址创建项目:
项目创建成功:
3.2 前端环境配置
3.2.1 node.js下载
安装完成,查看版本号
3.2.2VSCode开发工具下载
- 安装完成后下载插件
来到商店搜索插件名称,找到对应插件,进行install
常用插件:
2. 打开从远程仓库下载下来的项目
3. 打开终端
运行 npm install -g yarn 安装前端包管理工具yarn
# 完成安装后,查看版本
yarn -v
如果出现如下问题:
解决办法:
- 在win10桌面左下角的搜索栏中输入powershell,以管理员身份运行,弹出命令窗口
- 输入
set-ExecutionPolicy RemoteSigned
- 输入y
- 此时,输入
get-ExecutionPolicy
重启VScode,在VS Code的左下角右键,打开npm脚本
运行脚本,启动前端项目
3.2 项目工程搭建
3.2.1 项目结构介绍
如果是微服务项目的话,一般构成如下:
- 整个项目分为三大类工程:父工程、基础工程 和微服务工程
每一种类的工程都有不同的作用,下面是对其功能进行说明:
- 父工程
- 对依赖包的版本进行管理
- 本身为Pom工程,对子工程进行聚合管理
- 基础工程
- 继承父类工程
- 提供基础类库
- 提供工具类库
- 微服务工程
- 分别从业务、技术方面划分模块,每个模块构建为一个微服务。
- 每个微服务工程依赖基础工程,间接继承父工程。
- 包括:内容管理服务、媒资管理服务、搜索服务、缓存服务、消息服务等。
3.2.2 父工程搭建(pom.xml)
- 创建父工程
从远程拉取代码下来之后,准备创建父工程
- 检查jdk配置:
别忘记修改maven配置
- 进入Modules界面,新建模块:
注意:这里Server URL默认是start.spring.io,如果连接不上可换为start.aliyun.com
- 点击next,点击finish,创建成功
因为父工程主要是提供包管理、版本管理,因此很多文件可以删除,如上图
- 配置pom.xml(依赖管理定义)
父工程中没有代码,不用去依赖其它的包,它的作用是限定其它子工程依赖包的版本号,即在dependencyManagement 中去编辑即可
- 确定项目所依赖版本及版本号
properties与dependencyManagement和modelVersion同级
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.3.7.RELEASE</spring-boot.version>
<spring-cloud.version>Hoxton.SR9</spring-cloud.version>
<org.mapstruct.version>1.3.1.Final</org.mapstruct.version>
</properties>
- 删除所有原有的depencies依赖,设置dependencyManagement依赖管理
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- lombok,简化类的构建-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${org.projectlombok.version}</version>
</dependency>
<!-- mapstruct 代码生成器,简化java bean之间的映射 -->
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-jdk8</artifactId>
<version>${org.mapstruct.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
- 创建完成后提交到git
3.2.3 基础工程创建
基础工程与父工程目录同级
这里需要注意的是xuecheng-plus-base的父工程为xuecheng-plus-parent,xuecheng-plus-base的pom.xml的如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--
base项目的父工程为xuecheng-plus-parent
因为文件路径是在同级目录,因此此处pom指向需要将relativePath先跳到上级目录
-->
<parent>
<artifactId>xuecheng-plus-parent</artifactId>
<groupId>com.xuecheng</groupId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../xuecheng-plus-parent/pom.xml</relativePath>
</parent>
<groupId>com.xuecheng</groupId>
<artifactId>xuecheng-plus-base</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>xuecheng-plus-base</name>
<description>xuecheng-plus-base</description>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<!-- fast Json -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</dependency>
<!-- servlet Api 依赖 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<!-- 通用组件 -->
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.11</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<!--根据扩展名取mimetype-->
<dependency>
<groupId>com.j256.simplemagic</groupId>
<artifactId>simplemagic</artifactId>
<version>1.17</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-parameter-names</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jdk8</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
</dependencies>
</project>
基础工程中的内容待需要时再行开发。
至此父工程和基础工程创建完成,最后提交至git。
注意项目依赖并不完整,主要是为了演示过程
3.2.4 提交git
在项目工程的根目录添加.gitignore文件,编辑内容如下:
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**
!**/src/test/**
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
logs/
### VS Code ###
.vscode/
最终项目结构:
如果是初次push到远程,要求输入gogs的账号和密码
输入项目经理(PM)开始添加的成员账号即可,如:
jack
jack@qq.com
3.3 项目数据库环境
参考:黑马的学成在线项目