实验名称:实验三:通过Maven搭建JFinal极速开发框架实验
软件构造实验作业
实验名称:实验三:通过Maven搭建JFinal极速开发框架实验
班级:信2005-2班 学号:20204139 姓名:贾再民
一、实验任务
任务一:
1.什么是Maven?
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用Maven 的比例在持续增长。Maven这个单词来自于意第绪语(犹太语),意为知识的积累,最初在Jakata Turbine项目中用来简化构建过程。当时有一些项目(有各自Ant build文件),仅有细微的差别,而JAR文件都由CVS来维护。于是希望有一种标准化的方式构建项目,一个清晰的方式定义项目的组成,一个容易的方式发布项目的信息,以及一种简单的方式在多个项目中共享JARs。
2.Maven使用方法
2.1创建maven项目
最基本的maven项目创建命令如下
mvn archetype:generate -DgroupId={{your_companyName}} -DartifactId={{your_projectName} -DarchetypeArtifactId=maven-archetype-quickstart
根目录下有一个pom.xml,用来编写maven的配置(如依赖包)
详细创建指令如下:
mvn archetype:create或者mvn archetype:generate 是固定写法,两者几乎无区别。
额外参数如下:
-DgroupId 组织标识(包名)
-DartifactId 项目名称
-DarchetypeArtifactId 指定ArchetypeId,maven-archetype-quickstart,创建一个Java Project;maven-archetype-webapp,创建一个Web Project
-DinteractiveMode 是否使用交互模式
archetype是mvn内置的一个插件,create任务可以创建一个java项目骨架,DgroupId是软件包的名称,DartifactId是项目名,DarchetypeArtifactId是可用的mvn项目骨架,目前可以使用的骨架有:
maven-archetype-archetype
maven-archetype-j2ee-simple
maven-archetype-mojo
maven-archetype-portlet
maven-archetype-profiles (currently under development)
maven-archetype-quickstart
maven-archetype-simple (currently under development)
maven-archetype-site
maven-archetype-site-simple
maven-archetype-webapp
每一个骨架都会建相应的目录结构和一些通用文件,最常用的是maven-archetype-quickstart和maven-archetype-webapp骨架。maven-archetype-quickstart骨架是用来创建一个Java Project,而maven-archetype-webapp骨架则是用来创建一个JavaWeb Project。
2.2添加项目依赖
修改pom.xml 文件。例如想增加json解析包,在https://mvnrepository.com 这个网站搜索,然后复制maven配置进去。
https://mvnrepository.com/artifact/org.json/json/20180813
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20180813</version>
</dependency>
.....
</dependencies>
默认项目的依赖包下载
完后都放在 C:\Users\Administrator.m2\repository 目录下。需要修改依赖包的下载目录的话在 $MAVEN_HOME$\conf\settings.xml 这个文件下修改。
2.3编译项目
mvn compile
会下载依赖包,然后编译项目。默认编译结果在target/classes目录下,结果为.class文件。
2.4打包jar
jar是java的包,可以其他项目应用。
命令: mvn package
这个命令会先compile项目,生成classes,然后在把class压缩到一起生成一个jar包。
2.5清理
mvn clean
清理target目录的编译文件。
2.6部署
命令: mvn install
过程:【清理】→【编译】→【测试】→【打包】→【安装】
安装过程就是把.jar相关文件复制到本地仓库里。
运行
通过java命令可以运行.class文件,也可以运行.jar文件。
需要注意的点:
src源码的类有多少个main都无所谓(这与c/c++项目不一样)
通过java命令运行的时候需要指定运行哪一个类
jar或class有第三方依赖包的或需要指定依赖包的位置。
java命令的几个重要参数
例如:我现在有2个java文件,编译成jar文件。
App.java如下:(有第三方包)
package com.hhk;
import org.json.JSONObject;
public class App {
public static void main(String[] args) {
JSONObject out = new JSONObject();
out.put("type", "message");
System.out.println(out.toString());
}
}
App2.java如下:
package com.hhk;
/**
* Hello world!
*
*/
public class App2 {
public static void main(String[] args) {
System.out.println("Hello world");
}
}
pom.xml文件部分如下:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20180813</version>
</dependency>
</dependencies>
</dependencies>
运行命令mvn package 打包jar之后。(打包为testmvn.jar)
先运行App2.java的主函数,命令为(-cp 和 -classpath一致,表示要加载的jar文件或.class)
java -cp testmvn-1.0-SNAPSHOT.jar com.hhk.App2
App.java依赖json20180813.jar(加载多个.jar)
java -cp "testmvn-1.0-SNAPSHOT.jar;C:\Users\Administrator\.m2\repository\org\json\json\20180813\json-20180813.jar" com.hhk.App
pom.xml
pom.xml文件的节点元素说明:
<project> pom文件的顶级节点
<modelVersion> object model版本,对Maven2和Maven3来说,只能是4.0.0
<groupId> 项目创建组织的标识符,一般是域名的倒写
<artifactId> 定义了项目在所属组织的标识符下的唯一标识,一个组织下可以有多个项目
<version> 当前项目的版本,SNAPSHOT,表示是快照版本,在开发中
<packaging> 打包的方式,有jar、war、ear等
<name> 项目的名称
<url> 项目的地址
<properties> 属性配置,比如:<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<dependencies> 构建项目依赖的jar
3.Maven功能作用
Maven是一种构建工具(打包项目)、依赖管理工具(资源依赖管理工具:主要用于集成资源)、项目信息聚合工具。
1 、下载jar包
maven项目会有一个 pom.xml文件,在这个文件里面,只要你添加相应配置,他就会自动帮你下载相应jar包,不用你铺天盖地的到处搜索你需要的jar包了。
下面是示范配置文件pom.xml:
<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
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.atguigu.maven</groupId>
<artifactId>JavaProject01</artifactId>
<version>0.0.1-SNAPSHOT</version>
</project>
主要内容就是:
<groupId>com.atguigu.maven</groupId> //项目名
<artifactId>JavaProject01</artifactId> //项目模块
<version>0.0.1-SNAPSHOT</version> //项目版本
maven会通过,项目名-项目模块-项目版本来maven在互联网上的代码库中下载相应jar包。
2 、寻找依赖,下载依赖
寻找jar包是第一基本功能,寻找依赖在这个是在这个基础上的功能。
在maven的代码库中,每一个jar包也有自己的 pom.xml文件,而这个文件里面也会有配置,什么依赖范围我就不细说了,我想表达的就是,只要你配置的jar包所依赖的其他jar包都会被maven自动下载下来。
例如: 你配置了以下内容
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>2.6</version>
</dependency>
这样配置maven就会帮你自动下载spring-core-2.6.jar包,而这个jar包里面需要用到commons-logging.jar这个包,这叫就依赖,spring-core-2.6.jar依赖于commons-logging.jar。
3 、热部署,热编译
意思就是,在你web项目已经运行的时候,修改代码的能直接被web服务器所接受,就不需要你重启服务器了,或者重新部署代码了,而且你可以直接通过maven 打包war或者jar项目。
任务二:
1.配置maven
2.导入jfinal-4.9.01_demo_for_maven项目
3. 使用 blog.sql 中的 sql 语句创建数据库与数据库表
4. 修改 src/main/resources/demo-config-dev.txt 文件,填入正确的数据库连接用户名、密码
5. 打开 com.demo.common包下的 DemoConfig 文件,右键单击该文件并选择 Debug As---> Java Application,运行
6. 打开浏览器输入 localhost 即可查看运行效果
1.控制器(支持FreeMarker、JSP、Velocity、JSON等以及自定义视图渲染):
@Before(BlogInterceptor.class)
|
2.Service(所有业务与sql放在Service层)
/** *
|
3.Model(无xml、无annotation、无attribute)
@SuppressWarnings("serial") |
4.Validator(API引导式校验,比xml校验方便N倍,有代码检查不易出错)
public class BlogValidator extends Validator { |
5.拦截器(在此demo中仅为示例,本demo不需要此拦截器)
public class BlogInterceptor implements Interceptor { |
任务三:
1.项目框架:
2.创建数据库,表。
3.连接数据库
4.启动项目,运行DemoConfig.java
5.主界面
6.添加
7.删除
8.修改
9.查看
二、实验总结
这次实验接触了新的框架,使用新的开发框架jfinal,刚开始接很不熟悉,用了很大的力气才将项目导入进来,后来想通过命令进行打包和运行,但是一直报错,这个以后会再尝试。刚开始运行项目的时候,没有注意到_MappingKit写学生的信息,就一直报错。通过学习博客项目,最后完成了这次学生信息管理系统,过程很不是很顺利但是成功了。通过这次作业我收获了一种新的框架的使用方法,了解到了jfinal框架的结构,丰富了自己的知识。