• 【说明】貌似maven在真实的项目实战中挺重要的,可以省去大量的工作,有必要单独学习一下
  • 15.创建一个新的maven项目
  • 16.在src/main/java下随便创建一个java文件,clean,install.查看本地的.m2下是否成功看到有Jar包。

想仔细了解一下maven,所以找了 maven实战 这本书,下面会说一些书上的东西

第一章:第二节

maven版本

下载帮助插件(后面还有好多)

因为没有下载完,所以下载路径还没有(等待)

果然去国外网站上下载东西不可靠!还是国内镜像好!

然后又发现了管理员和普通用户在命令行下的权限是不一样的,为了能够使用mvn命令,做出如下改变

然后先自己按照书上说的建立了pom文件和src源文件,然后编译

不过和书上的不太一样。

接着做单元测试,先添加一个Junit依赖,修改POM

注意scope指定了测试范围是test

测试成功!

打包成功!

安装任务!(安装到本地本地仓库)

为了使打包的jar能够运行,需要借助maven-shade-plugins插件

再次安装(前者是可运行jar,后者是原始jar)

打开上面那个jar的manifest.mf

现在,可以执行了

OK! 上面介绍了一个maven项目helloWorld,介绍了pom、maven项目结构,以及如何编译测试打包等

  • 17.编写DAO,注意写清楚Interface和Impl,注意遵守命名规范。(注意java8里面的接口中可以default方法)

先看看接口和实现分层的必要性

接口正常来说应该是一开始就设计好的,不能随意的修改,如果你经常修改,首先需要考虑dao层是否考虑的足够充分
而为什么有接口层,是为了进行更好的隔离,最简单的例子就是,如果你对service层需要进行单元测试了,

而又不希望你对dao层进行实际的操作(可能是条件不允许),这时你很可能需要针对测试去mock一个dao出来,接口的优势就体现出来了

举个例子

dao中有

public interface UserDAO {
public List getUser();
}

dao.imple中

public class JdbcUserDao implements UserDAO{
@Override
public List getUser() {
//do sth.
return null;
}
}
  • 18.学习Junit,并尝试写自己的第一个单元测试,记着要写在自己的src/main/test下。

这个在上面的任务已经完成了!

import static org.junit.Assert.assertEquals;
import org.junit.Test;

import com.juvenxu.mvnbook.helloworld.HelloWorld;

public class HelloWorldTest
{
@Test
public void testSayHello()
{
HelloWorld helloWorld = new HelloWorld();

String result = helloWorld.sayHello();

assertEquals( "Hello Maven", result );
}
}

二:明日计划

  • 19学习Spring,配置Spring和Junit
  • 20.编写单元测试的代码,注意,你也可以尝试一下,先写单元测试的代码,再写接口,再写实现类。
  • 21.查看日志,并转成Debug模式,练习调试,学会查看单步执行时的变量值。
  • 22.买一台服务器,阿里云或者是金山云都可以。部署数据库到远程DB,从本地直接连远程。
  • 23.将部署自己服务到服务器上,包括Maven,Mysql客户端等。直接用Maven命令跑单元测试。
  • 24.直接执行Main方法,去在服务器上跑通流程。

三:疑难问题

因为是对着书本边做边学的,所以碰到的问题不多,即使有,在网上也可以找到相关问题解答

四:思考总结

主要谈谈maven是什么吧,可以简单理解为构建工具(类似make;ant),当然它不仅仅是构建工具

构建工具是将软件项目构建相关的过程自动化的工具。构建一个软件项目通常包含以下一个或多个过程:

  • 生成源码(如果项目使用自动生成源码);
  • 从源码生成项目文档;
  • 编译源码;
  • 将编译后的代码打包成JAR文件或者ZIP文件;
  • 将打包好的代码安装到服务器、仓库或者其它的地方;

有些项目可能需要更多的过程才能完成构建,这些过程一般也可以整合到构建工具中,因此它们也可以实现自动化。

自动化构建过程的好处是将手动构建过程中犯错的风险降到最低。而且,自动构建工具通常要比手动执行同样的构建过程要快。

task15-18的更多相关文章

  1. CSharpGL(18)分别处理glDrawArrays()和glDrawElements()两种方式下的拾取(ColorCodedPicking)

    CSharpGL(18)分别处理glDrawArrays()和glDrawElements()两种方式下的拾取(ColorCodedPicking) 我在(Modern OpenGL用Shader拾取 ...

  2. ABP(现代ASP.NET样板开发框架)系列之18、ABP应用层——权限验证

    点这里进入ABP系列文章总目录 ABP(现代ASP.NET样板开发框架)系列之18.ABP应用层——权限验证 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目 ...

  3. ASP.NET MVC5+EF6+EasyUI 后台管理系统(18)-权限管理系统-表数据

    系列目录 这一节,我们插入数据来看看数据流,让各位同学,知道这个权限表交互是怎么一个流程,免得大家后天雾里来雾里去首先我再解释一些表,SysUser和SysRole表不用解释了. SysRoleSys ...

  4. C#开发微信门户及应用(18)-微信企业号的通讯录管理开发之成员管理

    在上篇随笔<C#开发微信门户及应用(17)-微信企业号的通讯录管理开发之部门管理>介绍了通讯录的部门的相关操作管理,通讯录管理包括部门管理.成员管理.标签管理三个部分,本篇主要介绍成员的管 ...

  5. [MySQL Reference Manual] 18 复制

    18 复制 18 复制 18.1 复制配置 18.1.1 基于Binary Log的数据库复制配置 18.1.2 配置基于Binary log的复制 18.1.2.1 设置复制master的配置 18 ...

  6. Hihocoder 太阁最新面经算法竞赛18

    Hihocoder 太阁最新面经算法竞赛18 source: https://hihocoder.com/contest/hihointerview27/problems 题目1 : Big Plus ...

  7. grep-2.26 sed-4.2.2 awk-4.1.4 wget-1.18 pcregrep-8.39 pcre2grep-10.22 for windows 最新版本静态编译

    -------------------------------------------------------------------------------------------- grep (G ...

  8. 《C#本质论》读书笔记(18)多线程处理

    .NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...

  9. Java随机生成18位身份证号

    package com.ihome.data; import java.text.SimpleDateFormat; import java.util.Calendar; import java.ut ...

  10. tornado学习笔记18 _RequestDispatcher 请求分发器

    根据Application的配置,主要负责将客户端的请求分发到具体的RequestHandler.这个类实现了HTTPMessageDelegate接口. 18.1 构造函数 定义: def __in ...

随机推荐

  1. 响应头里的"Last-Modified"值是怎么来的?

    1.如图所示,app.js文件得到的响应头的"Last-Modified"数值是:Mon, 09 Sep 2013 09:18:22 GMT 我们查看服务器上的app.js文件的修 ...

  2. JS方面重点摘要(二)

    1.函数声明与函数表达式 (1)变量声明会置顶提前,但赋值仍在原地方(2)函数声明同变量声明一样会提前:但是,函数表达式没有提前,就相当于平时的变量赋值(3)函数声明会覆盖变量声明,但不会覆盖变量赋值 ...

  3. 移动web之响应式布局

    1.响应式布局的概念 响应式布局是Ethan Marcotte在2010年5月份提出的一个概念.简而言之.就是一个站点可以兼容多个终端--而不是为每一个终端做一个特定的版本号. 这个概念是为解决移动互 ...

  4. react-native AsyncStorage 数据持久化方案

    1,AsyncStorage介绍 AsyncStorage 是一个简单的.异步的.持久化的 Key-Value 存储系统,它对于 App 来说是全局性的.它用来代替 LocalStorage. 由于它 ...

  5. 模仿 BootstrapValidator 自制 模块化 表单验证

    index.html : <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  6. 优化MyDb

    import pymysqlclass MyDb(object): #新式类 def __del__(self):#析构函数 self.cur.close() self.coon.close() pr ...

  7. Java学习从入门到精通(1) [转载]

    Java Learning Path (一).工具篇 一. JDK (Java Development Kit) JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envi ...

  8. 关于TCP/IP,这十个问题你都知道,就入门了!

    关于TCP/IP,必知必会的十个问题 本文整理了一些TCP/IP协议簇中需要必知必会的十大问题,既是面试高频问题,又是程序员必备基础素养.   TCP/IP十个问题 一.TCP/IP模型 TCP/IP ...

  9. 【C语言疯狂讲义】(三)C语言运算符

    1.运算符: 连接两个操作数(常量.变量)的符号 用运算符依照一定的规则连接的式子称为表达式 运算符的分类: 1)操作数的个数: 单目运算(++     sizeof    !) 双目运算符:... ...

  10. angularjs2中的父子组件通信

    父组件模板中引用子组件 // father template: ... <child-item [name] = "fatherItemName" > </chi ...