通过一个含多个包且引用外部jar包的项目实例感受Maven的便利性

1 引言

最近在阅读一本Java Web的书籍1时,手工实现书上的一个含多个Packages的例子,手工进行编译、运行,最终实现了效果。但感觉到整个构建过程非常繁琐,不仅要手写各个源文件的编译命令,还要考虑源文件之间的编译先后顺序;同时还要手工下载本项目所依赖的第三方Jar包。考虑到Maven具有自动化构建、依赖管理的功能,当然考虑到基于Maven重新构建和管理本项目。通过Maven工具重新构建此项目,前后对比之强烈,能让人充分感受到Maven在自动化构建、依赖管理方面的便利性,能让程序员从项目构建中解放出来,更加聚焦于业务的实现。

通过阅读本文,Maven的初学者更能深刻理解Maven存在的必要性及其应用场景;同时,对于那些只会手工编译项目的Java程序员来说,给出了切换到Maven的理由。

接下来,先叙述手工构建项目的详细过程,再叙述基于Maven构建同一项目的详细过程,最后给出二种构建方式的对比。本文所用的环境如下:

名称 版本
Java 1.8.0_281
MySQL 8.0.13
Maven 3.8.8

2 手工构建

下面给出一个完整的例子,其划分为6个package,每个package中都放有相关的代码。该例子还需访问MySQL数据库。由此,本例子是一个相对大型的、简单的例子,以能凸显手工编译的不便。

  1. 在MySQL中创建数据库、然后创建表:如下:
mysql> create database testweb;
mysql> use testweb;
mysql> CREATE TABLE product(
    -> product_id varchar(20) NOT NULL,
    -> product_name varchar(50) DEFAULT NULL,
    -> price decimal(6,2) DEFAULT NULL,
    -> info varchar(100) DEFAULT NULL,
    -> PRIMARY KEY (product_id)
    -> )ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected, 1 warning (0.84 sec)
  1. 手工建立文件夹结构。创建一个根目录testDAO,再在其中创建三个子文件夹,如下:
    文件夹结构
  2. 在lib文件夹中放入本项目需要引用的第三方包mysql-connector-java-8.0.13.jar
  3. 在src文件夹中放入如下代码(注意代码所在的packages):

Product.java:

package com.rob.pojo;

import java.io.Serializable;

public class Product implements Serializable {
   
    private static final long serialVersionUID = 1L;
    private String product_id;
    private String product_name;
    private double price;
    private String info;
    
    public Product(){
   
        super();
    }
    
    public String getProduct_id(){
   
        return product_id;
    }
    public void setProduct_id(String product_id){
   
        this.product_id = product_id;
    }
    
    public String getProduct_name(){
   
        return product_name;
    }
    public void setProduct_name(String product_name){
   
        this.product_name = product_name;
    }
    
    public double getPrice(){
   
        return price;
    }
    public void setPrice(double price){
   
        this.price = price;
    }
    
    public String getInfo(){
   
        return info;
    }
    public void setInfo(String info){
   
        this.info = info;
    }
}

DBConnection.java:

package com.rob.db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBConnection {
   
    private static final String Driver = "com.mysql.cj.jdbc.Driver";
    private static final String URL = "jdbc:mysql://localhost:3306/testweb?serverTimezone=Asia/Shanghai&useSSL=false";
    private static final String USER = "root";
    private static final String PASSWORD = "123456";
    private Connection conn = null;
    
    public DBConnection() throws Exception {
   
        try {
   
            Class.forName(Driver);
            this.conn = DriverManager.getConnection(URL, USER, PASSWORD);
        } catch(Exception e) {
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值