日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Eclipse构建Maven分包分模块项目并构建服务端

發(fā)布時(shí)間:2025/3/12 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Eclipse构建Maven分包分模块项目并构建服务端 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

首先說一下Maven 模塊結(jié)構(gòu):

一個(gè)簡單的Maven模塊結(jié)構(gòu)是這樣的:
---- app-parent 一個(gè)父項(xiàng)目(app-parent)聚合很多子項(xiàng)目(app-util,app-dao,app-service,app-web)
|---- pom.xml (pom)
|
|-------- app-util
| |-------- pom.xml (jar)
|
|-------- app-dao
| |-------- pom.xml (jar)
|
|-------- app-service
| |-------- pom.xml (jar)
|
|-------- app-web
|-------- pom.xml (war)

環(huán)境

JDK 1.8/Eclipse/Spring Boot 1.5.9.RELEASE/Spring Cloud Dalston.SR1

構(gòu)建Maven 父項(xiàng)目

打開Eclipse,新建Maven 項(xiàng)目 springcloudDemo

注意:

  • 由于筆記是學(xué)習(xí)完寫的,所以在截圖的時(shí)候完全按照自己搭建的項(xiàng)目名來寫,出現(xiàn)項(xiàng)目名重復(fù),所以這里直接馬賽克。正常不會(huì)出現(xiàn)這種問題。
  • 請(qǐng)選擇 pom

打開父項(xiàng)目:觀察結(jié)構(gòu)

添加pom 依賴:

<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.mike.demo</groupId><artifactId>springcloudDemo</artifactId><version>0.0.1-SNAPSHOT</version><packaging>pom</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><junit.version>4.12</junit.version><log4j.version>1.2.17</log4j.version><lombok.version>1.16.18</lombok.version></properties><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Dalston.SR1</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>1.5.9.RELEASE</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.0.4</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.0.31</version></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.0</version></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId><version>1.2.3</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version><scope>test</scope></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>${log4j.version}</version></dependency></dependencies></dependencyManagement> </project>

基礎(chǔ)模快共有三個(gè)

  • springcloudDemo-api 封裝的整體entity/接口/公共配置等
  • springcloudDemo-provider-dept-8001 微服務(wù)落地的服務(wù)提供者
  • springcloudDemo-consumer-dept-80 微服務(wù)調(diào)用的客戶端使用
    下面分別就上面上個(gè)模塊進(jìn)行構(gòu)建

pringcloudDemo-api 構(gòu)建

  • 鼠標(biāo)右鍵點(diǎn)擊 父項(xiàng)目 springcloudDemo,新建 Maven Mondule ,點(diǎn)擊下一步
  • 輸入模塊名稱:springcloudDemo-api
  • 選擇Jar 包,點(diǎn)擊Finish
  • 查看父項(xiàng)目此時(shí)的情況
  • pom 依賴
  • <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><parent><!-- 子類里面顯示聲明才能有明確的繼承表現(xiàn),無意外就是父類的默認(rèn)版本否則自己定義 --><groupId>com.mike.demo</groupId><artifactId>springcloudDemo</artifactId><version>0.0.1-SNAPSHOT</version></parent><artifactId>springcloudDemo-api</artifactId><!-- 當(dāng)前Module我自己叫什么名字 --><dependencies><!-- 當(dāng)前Module需要用到的jar包,按自己需求添加,如果父類已經(jīng)包含了,可以不用寫版本號(hào) --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies> </project>
  • 新建 Model Dept
  • package com.mike.demo.entities;import java.io.Serializable;import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors;@SuppressWarnings("serial") @NoArgsConstructor @Data @Accessors(chain=true) public class Dept implements Serializable //必須序列化 {private Long deptno; //主鍵private String dname; //部門名稱private String db_source;//來自那個(gè)數(shù)據(jù)庫,因?yàn)槲⒎?wù)架構(gòu)可以一個(gè)服務(wù)對(duì)應(yīng)一個(gè)數(shù)據(jù)庫,同一個(gè)信息被存儲(chǔ)到不同數(shù)據(jù)庫public Dept(String dname){super();this.dname = dname;}public Dept(Long deptno, String dname, String db_source) {super();this.deptno = deptno;this.dname = dname;this.db_source = db_source;}public Long getDeptno() {return deptno;}public void setDeptno(Long deptno) {this.deptno = deptno;}public String getDname() {return dname;}public void setDname(String dname) {this.dname = dname;}public String getDb_source() {return db_source;}public void setDb_source(String db_source) {this.db_source = db_source;} }

    注意: 可能大家認(rèn)為 使用了 lombok 為什么還需要寫setter/getter 方法,但是在之后的組件整合的過程中,返回Dept Json 數(shù)據(jù)的時(shí)候無法正確返回所以加上了。
    8. 點(diǎn)擊pom 文件 run : maven clean
    9. clean 之后,maven install 將 api 打成jar包供之后的模塊使用。
    注意: 在打包的過程中,可能出現(xiàn) Perhaps you are running on a JRE rather than a JDK? 解決辦法可以去搜一搜。

    springcloudDemo-provider-dept-8001

    如同上面新建 springcloudDemo-api 的步驟一樣,新建項(xiàng)目。
    建成后,父項(xiàng)目擁有:


    下面看一下 springcloudDemo-api 項(xiàng)目結(jié)構(gòu):

  • pom 文件
  • <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><parent><groupId>com.mike.demo</groupId><artifactId>springcloudDemo</artifactId><version>0.0.1-SNAPSHOT</version></parent><artifactId>springcloudDemo-provider-dept-8001</artifactId><dependencies><dependency><!-- 引入自己定義的api通用包,可以使用Dept部門Entity --><groupId>com.mike.demo</groupId><artifactId>springcloudDemo-api</artifactId><version>${project.version}</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jetty</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><!-- 修改后立即生效,熱部署 --><dependency><groupId>org.springframework</groupId><artifactId>springloaded</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId></dependency></dependencies></project>
  • 新建application.yml 文件
  • server:port: 8001mybatis:config-location: classpath:mybatis/mybatis.cfg.xml # mybatis配置文件所在路徑type-aliases-package: com.mike.demo.entities # 所有Entity別名類所在包mapper-locations:- classpath:mybatis/mapper/**/*.xml # mapper映射文件spring:application:name: springcloudDemo-dept datasource:type: com.alibaba.druid.pool.DruidDataSource # 當(dāng)前數(shù)據(jù)源操作類型driver-class-name: org.gjt.mm.mysql.Driver # mysql驅(qū)動(dòng)包url: jdbc:mysql://xxxxxxxxx:3306/cloudDB01 # 數(shù)據(jù)庫名稱username: rootpassword: rootdbcp2:min-idle: 5 # 數(shù)據(jù)庫連接池的最小維持連接數(shù)initial-size: 5 # 初始化連接數(shù)max-total: 5 # 最大連接數(shù)max-wait-millis: 200 # 等待連接獲取的最大超時(shí)時(shí)間
  • mybaties.cfg.xml
  • <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><settings><setting name="cacheEnabled" value="true"/><!-- 二級(jí)緩存開啟 --></settings></configuration>
  • DeptMapper.xml
  • <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.mike.demo.dao.DeptDao"><select id="findById" resultType="Dept" parameterType="Long">select deptno,dname,db_source from dept where deptno=#{deptno}; </select><select id="findAll" resultType="Dept">select deptno,dname,db_source from dept; </select><insert id="addDept" parameterType="Dept">INSERT INTO dept(dname,db_source) VALUES(#{dname},DATABASE());</insert></mapper>
  • DeptDao.java
  • package com.mike.demo.dao;import java.util.List; import org.apache.ibatis.annotations.Mapper; import com.mike.demo.entities.Dept;@Mapper public interface DeptDao {public boolean addDept(Dept dept);public Dept findById(Long id);public List<Dept> findAll(); }
  • DeptService.java
  • package com.mike.demo.service;import java.util.List; import com.mike.demo.entities.Dept; public interface DeptService {public boolean add(Dept dept);public Dept get(Long id);public List<Dept> list();}
  • DeptServiceImpl.java
  • package com.mike.demo.service.impl;import java.util.List;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;import com.mike.demo.dao.DeptDao; import com.mike.demo.entities.Dept; import com.mike.demo.service.DeptService;@Service public class DeptServiceImpl implements DeptService {@Autowiredprivate DeptDao dao ;@Overridepublic boolean add(Dept dept){return dao.addDept(dept);}@Overridepublic Dept get(Long id){return dao.findById(id);}@Overridepublic List<Dept> list(){return dao.findAll();}}
  • DeptController.java
  • package com.mike.demo.controller;import java.util.List;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController;import com.mike.demo.entities.Dept; import com.mike.demo.service.DeptService;@RestController public class DeptController {@Autowiredprivate DeptService service;@RequestMapping(value="/dept/add",method=RequestMethod.POST)public boolean add(@RequestBody Dept dept){return service.add(dept);}@RequestMapping(value="/dept/get/{id}",method=RequestMethod.GET)public Dept get(@PathVariable("id") Long id){return service.get(id);}@RequestMapping(value="/dept/list",method=RequestMethod.GET)public List<Dept> list(){return service.list();} }
  • 服務(wù)啟動(dòng)類 DeptProvider8001_App
  • package com.mike.demo;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;/*** 服務(wù)的提供者* @author asus**/ @SpringBootApplication public class DeptProvider8001_App {public static void main(String[] args){SpringApplication.run(DeptProvider8001_App.class, args);} }

    數(shù)據(jù)庫文件, 根據(jù)上面application.yml 配置的數(shù)據(jù)庫,到Mysql中建庫建表

    DROP DATABASE IF EXISTS cloudDB01; CREATE DATABASE cloudDB01 CHARACTER SET UTF8; USE cloudDB01; CREATE TABLE dept (deptno BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT,dname VARCHAR(60),db_source VARCHAR(60) ); INSERT INTO dept(dname,db_source) VALUES('開發(fā)部',DATABASE()); INSERT INTO dept(dname,db_source) VALUES('人事部',DATABASE()); INSERT INTO dept(dname,db_source) VALUES('財(cái)務(wù)部',DATABASE()); INSERT INTO dept(dname,db_source) VALUES('市場部',DATABASE()); INSERT INTO dept(dname,db_source) VALUES('運(yùn)維部',DATABASE());SELECT * FROM dept;

    服務(wù)端測(cè)試

    啟動(dòng)啟動(dòng)類


    這樣我們的 Eclipse 分包構(gòu)建項(xiàng)目就完成了,且完成了 SpringCloud 服務(wù)端的程序,由于篇幅有限,所以客戶端的放在下一個(gè)篇中。

    總結(jié)

    以上是生活随笔為你收集整理的Eclipse构建Maven分包分模块项目并构建服务端的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。