一,测试:
新建maven项目maven second,在second项目中引用first项目
如果first项目要被其他项目引用,要把first项目安装到maven的本地仓库,昨天学习的命令mvn install
![](https://img-blog.csdnimg.cn/img_convert/8721a5a55bde6b42f0258d252214dbeb.png)
使用【run as】中的【maven build】来执行
多个目标可以执行多个目标,中间用空格隔开,安装成功后就可以在maven仓库根据gav坐标找到相应jar包
![](https://img-blog.csdnimg.cn/img_convert/e9159db715db685f87f2611f3a6c5840.png)
![](https://img-blog.csdnimg.cn/img_convert/e78c3dee6d959b43cbfe66e7f8cc500d.png)
![](https://img-blog.csdnimg.cn/img_convert/96d171d87b6bd1059b388e50ca137443.png)
引用成功后可以观察两个项目的依赖情况,得把junit范围改为默认。(没实操)
二,maven项目中的关系
继承关系
聚合关系
![](https://img-blog.csdnimg.cn/img_convert/d6b2cdfa51a9ecc0433b468315235999.png)
项目搭建(以聚合关系来处理项目中的结构,依据分析,暂时划分为3个模块)
父项目:sxnd_env_progect
子模块:env_common(公共模块),env_client(客户模块),env_server(服务器模块)
步骤:
1.新建父项目,打包方式为pom
![](https://img-blog.csdnimg.cn/img_convert/f13d77b7a9c6243cb3fa1efbece6183a.png)
在父项目中,【new】->【other】新建[Maven module],依次创建上面的三个子模块。
![](https://img-blog.csdnimg.cn/img_convert/04270b86647bccafbb1ebe7362761d71.png)
![](https://img-blog.csdnimg.cn/img_convert/f3645bf1c44777eaaf5db8205d72af0e.png)
遇到问题1:包和文件夹是分开的,修改父pom,子pom不变。
![](https://img-blog.csdnimg.cn/img_convert/04f5d7a231cde1c778690be8fd19054e.png)
![](https://img-blog.csdnimg.cn/img_convert/0d3cb5c3b3ea24bc50cf26ba82b736ec.png)
解决了:
![](https://img-blog.csdnimg.cn/img_convert/ac86cc1eae0e63dd884222c3ca8f1ea4.png)
![](https://img-blog.csdnimg.cn/img_convert/339a37c7a5a6f65a78861f4510cddcef.png)
三,版本控制工具(git)一款开源且免费的版本控制工具
官网下载,
运行exe文件一路next安装完成,
验证右击的时候会出现两个工具
单人常见操作(主要用于备份):
git pull拉取
git add添加
git commit提交
git push
git init初始化一个仓库
创建仓库
![](https://img-blog.csdnimg.cn/img_convert/92f6ab2cc4d9a1c76c410fd772b31e2d.png)
任意文件夹-->右键git bash here-->get init
克隆远程仓库(git clone)从远程仓库(github/gitee)复制到本地,可以拿到被别人的优秀项目,本次实训主要是推送和拉取自己的项目
完成一个码云(gitee)账号的注册
![](https://img-blog.csdnimg.cn/img_convert/b226383dd3f69ef1a678bb173ffd6381.png)
![](https://img-blog.csdnimg.cn/img_convert/1ed74998c9601f43e76a2a0d0beda288.png)
![](https://img-blog.csdnimg.cn/img_convert/1ed5b70ca43c8a6d5b4da9c33e76b70f.png)
四,将本地仓库与远程仓库建立练习,并且推送文件到网络仓库
在桌面上新建一个空白文件夹【git-test】
双击打开,右键【git bash git here】,打开之后绑定邮箱和账号
![](https://img-blog.csdnimg.cn/img_convert/cd3f87bd3ad228617a54fc0c52df50ab.png)
3.新建空白邮箱,你可以输入
![](https://img-blog.csdnimg.cn/img_convert/2d8877b946af7a1ede37a9b1f24f1e72.png)
4.将新建的文件添加到本地仓库
![](https://img-blog.csdnimg.cn/img_convert/1a6eb8fb0d38606440eb64e0623d41cc.png)
5.将添加进去的文件,提交到本地仓库
![](https://img-blog.csdnimg.cn/img_convert/6c2abc567771b6e9ffa608bee3f79d14.png)
6.建立和远程仓库的链接(这里一般只用做一次)
![](https://img-blog.csdnimg.cn/img_convert/fbb943b1d33b357b8308635386d0a356.png)
7.把当前本地的内容提交到仓库
![](https://img-blog.csdnimg.cn/img_convert/f16693c96e75e880b2d5552f42a18209.png)
推送完成之后,刷新gitee的网页,看是否上传成功
如果第二次开始,对于【git-test】文件夹中的内容有修改,仅需要执行上面步骤的4,5,7
8.远程仓库通过网页修改文件内容
![](https://img-blog.csdnimg.cn/img_convert/09c435d2f75ab7b187cb09f2ca2b2f56.png)
![](https://img-blog.csdnimg.cn/img_convert/4356ac9dc74dd036e953112d9380162e.png)
五,使用git备份我们的项目(扩展)
新建一个正规的仓库
将本地项目存在的文件夹初始为本地仓库
和远程仓库进行连接然后添加内容,提交内容
将已有的内容推送到网络仓库进行备份
六,项目搭建
- env_commen:放入公共的类和接口
实体类
工具包
该项目封装的自定义异常
用来定义功能的接口
配置模块的实现类和日志模块的实现类
b.env_client:客户端的主要程序
采集日志文件中的信息
发送到服务器
c.env_server:服务器端的主要程序
接收客户端传过来的信息
解析信息并录入到数据库里
创建包的结果如上图
七,项目需求()
采集模块
package com.briup.entity;
import java.io.Serializable;
import java.sql.Timestamp;
public class Environment implements Serializable {
private static final long serialVersionUid = 1L;
private String name;
private String srcId;
private String desId;
private String devId;
private String address;
private int count;
private String cmd;
private int status;
private float data;
private Timestamp time;
public Environment() {
}
public Environment(String name, String srcId, String desId, String devId, String address, int count, String cmd, int status, float data, Timestamp time) {
this.name = name;
this.srcId = srcId;
this.desId = desId;
this.devId = devId;
this.address = address;
this.count = count;
this.cmd = cmd;
this.status = status;
this.data = data;
this.time = time;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSrcId() {
return srcId;
}
public void setSrcId(String srcId) {
this.srcId = srcId;
}
public String getDesId() {
return desId;
}
public void setDesId(String desId) {
this.desId = desId;
}
public String getDevId() {
return devId;
}
public void setDevId(String devId) {
this.devId = devId;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public String getCmd() {
return cmd;
}
public void setCmd(String cmd) {
this.cmd = cmd;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public float getData() {
return data;
}
public void setData(float data) {
this.data = data;
}
public Timestamp getTime() {
return time;
}
public void setTime(Timestamp time) {
this.time = time;
}
@Override
public String toString() {
return "Environment{" +
"name='" + name + '\'' +
", srcId='" + srcId + '\'' +
", desId='" + desId + '\'' +
", devId='" + devId + '\'' +
", address='" + address + '\'' +
", count=" + count +
", cmd='" + cmd + '\'' +
", status=" + status +
", data=" + data +
", time=" + time +
'}';
}
}
将分析的程序1得到的数据(一份日志文件),在程序2(客户端)中使用IO流读取配置文件,
然后按照格式“|”进行分割
将数据取出来封装成一个对象
将多个对象装在集合中返回出去即可
依据这些属性抽象一个类(由模块id确定环境名称)
环境数据可以监控 温湿度,co2浓度,光照强度,
网络模块(2个接口)
客户端为发送端
抽象出发送的接口【Client.java】,分析:发送的方法需要参数,不需要返回值
发送的数据应该是什么类型?网络编程中要做什么类型的数据交换?发送的数据可以是对象
服务器为接收端
一个接受的方法,不需要参数,需要返回值
package com.briup.env.common.interfaces;
import java.util.Collection;
import com.briup.env.common.entity.Environment;
public interface Client {
/**
* 客户端发送方法
* @param coll 代表采集到的并且整理好的数据清单
*/
public void send(Collection<Environment>coll) ;
}
【server.java】
package com.briup.env.common.interfaces;
import java.util.Collection;
import com.briup.env.common.entity.Environment;
public interface Server {
/**
* 服务器接受方法
* @return返回从客户端收到的数据清单
*/
public Collection<Environment> receive();
}
【dbstore.java】
package com.briup.env.common.interfaces;
import java.util.Collection;
import com.briup.env.common.entity.Environment;
public interface DbStore {
/**
* 入库方法
* @param coll服务器接受回来的数据清单
*/
public void dbstore(Collection<Environment>coll);
}
【gather.java】
package com.briup.env.common.interfaces;
//主要提供采集功能的接口
import java.util.Collection;
import com.briup.env.common.entity.Environment;
public interface Gather {
//采集环境数据,return环境对象集合
public Collection<Environment>gather();
}
入库模块
主要由服务器端执行,有参数无返回值
今天就学到这里啦,打到了这里,不过我的代码@Override加上就报错,刚刚搜了是因为没有方法重写,不过老师好像也没方法重写就没有报错,一定是哪里错了,明天好好看看,晚安!