<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
開發工具 :idea
工程結構:
父工程father
子模組 dao (用於持久化資料跟資料庫互動)
子模組 entity (實體類)
子模組 service (處理業務邏輯)
子模組 web (頁面互動接收、傳遞資料,唯一有啟動類的模組)
關係: web依賴 service、dao、entity
service依賴 dao、entity
dao依賴 entity
entity誰都不依賴,獨立的
new ------file-------project
聯網狀態下 選擇 default 直接下一步
專案結構如下
接下來,把src整個刪掉,父工程不需要,因為父工程你就當它只有一個外殼就完了
接下來建立子模組 工程上右鍵 → new → Module 選擇Spring Initaializr 下一步
重複上面操作 建立service 現在建立好了 entity 和 service
dao模組和web模組可以根據實際需求選擇引入mysql,mybatis,web這些
刪除每個子模組中沒用的檔案,.mvn、.gitignore、daoiml、mvnw、mvnw.cmd檔案只留下pom.xml
刪除除了web模組以外其它模組中的Applicatin啟動項,和resources目錄下的application.properties組態檔
以上動作操作完成以後如果你發現你的子模組變成了資料夾,沒關係,找到Maven Projects重新整理一下就好了
最終的專案結果如下
開啟父pom.xml修改打包方式jar為pom,注意:build內容也需要做替換,因為預設的spring-boot-maven-plugin這種方式,等到後期打包的時候他會一直提示你,你引入的依賴不存在!程式碼如下
<?xml version="1.0" encoding="UTF-8"?> <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> <!--指定專案的spring boot的版本--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.3.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <!--版本號--> <groupId>com.mr</groupId> <artifactId>father</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <!--父類別為pom--> <name>father</name> <description>Demo project for Spring Boot</description> <!--java 版本--> <properties> <java.version>1.8</java.version> </properties> <!--管理模組--> <modules> <module>entity</module> <module>dao</module> <module>service</module> <module>web</module> </modules> <!--指定專案中的公有依賴--> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <!--指定使用maven 打包--> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>${java.version}</source> <target>${java.version}</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.19.1</version> <configuration> <skipTests>true</skipTests> <!--預設關掉單元測試 --> </configuration> </plugin> </plugins> </build> </project>
這裡有個坑需要注意,dao、service、entity這三個模組的pom.xml檔案中不需要build 內容,直接幹掉
entity 的 pom.xml 內容
<?xml version="1.0" encoding="UTF-8"?> <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>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.3.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.mr</groupId> <artifactId>entity</artifactId> <version>0.0.1-SNAPSHOT</version> <name>entity</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> </project>
dao 的 pom.xml 內容
<?xml version="1.0" encoding="UTF-8"?> <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>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.3.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.mr</groupId> <artifactId>dao</artifactId> <version>0.0.1-SNAPSHOT</version> <name>dao</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.0.0</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--引入entity--> <dependency> <groupId>com.mr</groupId> <artifactId>entity</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> </dependencies> </project>
service 模組的 pom.xml 內容
<?xml version="1.0" encoding="UTF-8"?> <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>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.3.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.mr</groupId> <artifactId>service</artifactId> <version>0.0.1-SNAPSHOT</version> <name>service</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--引入dao--> <dependency> <groupId>com.mr</groupId> <artifactId>dao</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <!--引入entity--> <dependency> <groupId>com.mr</groupId> <artifactId>entity</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> </dependencies> </project>
web模組的 pom.xml 內容
注意build部分,因為web模組作為程式的入口啟動,所以它需要打包,並且要指定Main Class
<?xml version="1.0" encoding="UTF-8"?> <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>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.3.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.mr</groupId> <artifactId>web</artifactId> <version>0.0.1-SNAPSHOT</version> <name>web</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.0.0</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--引入dao--> <dependency> <groupId>com.mr</groupId> <artifactId>dao</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <!--引入entity--> <dependency> <groupId>com.mr</groupId> <artifactId>entity</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <!--引入service--> <dependency> <groupId>com.mr</groupId> <artifactId>service</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <!-- 指定該Main Class為全域性的唯一入口 --> <mainClass>com.mr.WebApplication</mainClass> <layout>ZIP</layout> </configuration> <executions> <execution> <goals> <goal>repackage</goal><!--可以把依賴的包都打包到生成的Jar包中--> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
到此為止所有的依賴全部完成!接下來就是測試!做了一個簡單的查詢
在web的專案裡application.properties組態檔裡 新增以下設定
# mybatis 設定 #使用mybatis組態檔,需要指定該檔案的檔案路徑 #指定mapper.xml檔案的路徑,如果mapper.xml與介面在一起則不需要該設定 mybatis.mapper-locations=classpath:mapper/*Mapper.xml #掃描pojo包中的實體類並起別名 mybatis.type-aliases-package=com.mr #紀錄檔級別改為debug可以顯示sql語句,logging.level後為存放mapper介面的包 logging.level.com.mr.mapper=debug # 開啟駝峰命名法 mybatis.configuration.map-underscore-to-camel-case: true mybatis.configuration.map-underscore-to-camel-case=true #設定資料來源 #德魯伊 連線池 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.username=ws spring.datasource.password=1 spring.datasource.driver-class-name=com.mysql.jdbc.Driver # 必須加?號後內容 北京時間東八區 spring.datasource.url=jdbc:mysql://127.0.0.1:3306/redis?serverTimezone=GMT%2B8
在web專案裡 pom.xml 中新增以下座標
<!--連線池--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.10</version> </dependency> <!--引入freemarker--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency>
entity 模組裡 在com.mr包下 建立實體類
public class User { private Integer userId; private String userName; private String userPass; @DateTimeFormat(pattern ="yyyy-MM-dd HH-mm-ss") private Date userDate; public Integer getUserId() { return userId; } public void setUserId(Integer userId) { this.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getUserPass() { return userPass; } public void setUserPass(String userPass) { this.userPass = userPass; } public Date getUserDate() { return userDate; } public void setUserDate(Date userDate) { this.userDate = userDate; } @Override public String toString() { return "User{" + "userId=" + userId + ", userName='" + userName + ''' + ", userPass='" + userPass + ''' + ", userDate=" + userDate + '}'; } public User() { super(); } @Override public int hashCode() { return super.hashCode(); } @Override public boolean equals(Object obj) { return super.equals(obj); } @Override protected Object clone() throws CloneNotSupportedException { return super.clone(); } @Override protected void finalize() throws Throwable { super.finalize(); } }
在dao模組下 com.mr 包下 建立介面
@Mapper //保證被掃描到 public interface UserDao { List<User> queryUser(); }
然後建立 mapper.xml 檔案 與web.xml 組態檔路徑一致 按下圖操作
@Mapper //保證被掃描到 public interface UserDao { List<User> queryUser(); }
在service 模組 com.mr包下建立 UserService 介面 並建立對應的實現類 UserServiceImpl
@Service("userService") public class UserServiceImpl implements UserService { @Autowired private UserDao userDao; @Override public List<User> queryService() { return userDao.queryUser(); } }
在 web 模組下 com.mr包下建立對應的 UserController 程式碼如下
@Controller public class UserController { @Autowired private UserService userService; @RequestMapping("queryUser") public String queryUser(ModelMap map){ List<User> list= userService.queryService(); map.put("list",list); return "list"; } }
這裡需要建立list.ftl 頁面在web 模組下的resource-----templates建立
<#list list as user> ${user.userId} ${user.userName} ${(user.userDate?string("yyyy-MM-dd HH-mm-ss"))!"沒有設定時間"} <#--!後如果為空的話 需要顯示的內容--> </#list>
具體的freemarker 使用-----https://www.jb51.net/article/236936.htm
在web 模組的 WebApplication 啟動專案
存取queryUser 效果如下: 這裡展示的是資料庫資料
打包可執行jar
因為所有的pom.xml有已經設定好了,只需要動手執行 package打包動作就行了,第一次打包不需要clean,記住以後每次打包之前clean一下,關於為什麼打jar包,不打war包這個問題,還有其它會遇到的問題,最後說明
雙擊執行package,看到BUILD SUCCESS 就證明打包成功了 前提是你的每一個模組下的pom.xml要設定好,誰需要打包,誰不需要打包,誰依賴誰,父工程是否宣告了子模組,子模組是否宣告了父工程是誰,這些是重點!否則 會焦頭爛額
接下來去找你工程目錄,web資料夾下的target資料夾,剛才打包好的jar檔案,就放在這裡了
使用 java -jar web-0.0.1-SNAPSHOT.jar 命令來測試執行打包的可執行jar檔案
執行成功 !!!!!
到此這篇關於springboot實現maven多模組和打包部署的文章就介紹到這了,更多相關maven多模組和打包部署內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45