明確子父模塊結構
父目錄是帶modules
大致結構如下:
<modules><module>ruoyi-admin</module><module>ruoyi-framework</module><module>ruoyi-system</module><module>ruoyi-quartz</module><module>ruoyi-generator</module><module>ruoyi-common</module><module>ruoyi-ems</module></modules><packaging>pom</packaging>
像打包出現這樣的報錯就是子模塊打包方式使用了pom
Failure to find com.ruoyi:ruoyi-framework:jar:3.8.5 in https://maven.aliyun.com/repository/public was cached in the local repository, resolution will not be reattempted until the update interval of public has elapsed or updates are forced
應該使用jar的打包方式。
jar,war,pom的區別
JAR、WAR 和 POM 是 Java 開發中常見的三種文件類型,它們在項目構建和部署過程中起著不同的作用。
-
JAR(Java Archive):JAR 文件是一種用于存儲 Java 類、資源文件和庫的歸檔文件格式。它通常用于打包和發布 Java 應用程序、庫或模塊。JAR 文件可以包含多個類文件和相關的資源文件,并且可以通過 Java 虛擬機(JVM)來運行。JAR 文件可以被其他 Java 項目依賴引用,使得代碼復用和模塊化開發更加方便。
-
WAR(Web Application Archive):WAR 文件是一種用于打包和部署 Web 應用程序的歸檔文件格式。WAR 文件中包含了 Web 應用程序的 Java 類、資源文件、靜態資源(如 HTML、CSS、JavaScript 文件)以及部署描述符(如 web.xml)。WAR 文件可以被部署到支持 Java Servlet 規范的 Web 容器(如 Tomcat、Jetty)中,并通過容器提供的 HTTP 服務來訪問 Web 應用程序。
-
POM(Project Object Model):POM 是 Maven 構建工具使用的 XML 文件,用于定義和管理項目的各種元數據和配置信息。POM 文件描述了項目的依賴關系、構建生命周期、插件配置、倉庫信息等。它是 Maven 構建過程中的核心文件,通過讀取和解析 POM 文件,Maven 可以自動化地執行編譯、測試、打包、部署等操作。
總結:
- JAR 是用于打包 Java 類和相關資源的歸檔文件格式,用于代碼的發布和復用。
- WAR 是用于打包和部署 Web 應用程序的歸檔文件格式,包含了 Web 相關的類、資源和描述符,用于 Web 應用的部署和訪問。
- POM 是 Maven 項目的配置文件,用于定義項目的元數據和構建配置,通過讀取和解析 POM 文件,Maven 可以自動化地完成各種構建任務。
配置pom打包方式的意思是使用maven分模塊管理,都會有一個父級項目,pom文件一個重要的屬性就是packaging(打包類型),一般來說所有的父級項目的packaging都為pom,packaging默認類型jar類型,如果不做配置,maven會將該項目打成jar包。
子模塊都是jar包
父模塊是ruoyi,其它都是子模塊。
有時需要按照順序clean 和 install。我這里都配置好了,只要在父工程中install就行。然后就會獲得一個target文件夾,里面有我們要的打包好的程序jar包
admin模塊細節部分:
會有build部分
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.1.1.RELEASE</version><configuration><fork>true</fork> <!-- 如果沒有該配置,devtools不會生效 -->
<!-- <mainClass>com.ruoyi.RuoYiApplication</mainClass>--></configuration><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>3.1.0</version><configuration><failOnMissingWebXml>false</failOnMissingWebXml><warName>${project.artifactId}</warName></configuration></plugin></plugins><finalName>${project.artifactId}</finalName></build>
貼出所有的pom.xml文件吧
common的
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://maven.apache.org/POM/4.0.0"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>ruoyi</artifactId><groupId>com.ruoyi</groupId><version>3.8.5</version>
<!-- <relativePath>../pom.xml</relativePath>--></parent><modelVersion>4.0.0</modelVersion><artifactId>ruoyi-common</artifactId><packaging>jar</packaging><description>common通用工具</description><dependencies><!-- Spring框架基本的核心工具 --><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId></dependency><!-- SpringWeb模塊 --><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId></dependency><!-- spring security 安全認證 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency><!-- pagehelper 分頁插件 --><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId></dependency><!-- 自定義驗證注解 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency><!--常用工具類 --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId></dependency><!-- JSON工具類 --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId></dependency><!-- 動態數據源 --><dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.5.2</version></dependency><!-- 阿里JSON解析器 --><dependency><groupId>com.alibaba.fastjson2</groupId><artifactId>fastjson2</artifactId></dependency><!-- io常用工具類 --><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId></dependency><!-- excel工具 --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId></dependency><!-- yml解析器 --><dependency><groupId>org.yaml</groupId><artifactId>snakeyaml</artifactId></dependency><!-- Token生成與解析--><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId></dependency><!-- Jaxb --><dependency><groupId>javax.xml.bind</groupId><artifactId>jaxb-api</artifactId></dependency><!-- redis 緩存操作 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><!-- pool 對象池 --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId></dependency><!-- 解析客戶端操作系統、瀏覽器等 --><dependency><groupId>eu.bitwalker</groupId><artifactId>UserAgentUtils</artifactId></dependency><!-- servlet包 --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId></dependency></dependencies></project>
system的
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://maven.apache.org/POM/4.0.0"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>ruoyi</artifactId><groupId>com.ruoyi</groupId><version>3.8.5</version></parent><modelVersion>4.0.0</modelVersion><packaging>jar</packaging><artifactId>ruoyi-system</artifactId><description>system系統模塊</description><dependencies><!-- 通用工具--><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-common</artifactId></dependency></dependencies></project>
quartz
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://maven.apache.org/POM/4.0.0"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>ruoyi</artifactId><groupId>com.ruoyi</groupId><version>3.8.5</version></parent><modelVersion>4.0.0</modelVersion><artifactId>ruoyi-quartz</artifactId><packaging>jar</packaging><description>quartz定時任務</description><dependencies><!-- 定時任務 --><dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><exclusions><exclusion><groupId>com.mchange</groupId><artifactId>c3p0</artifactId></exclusion></exclusions></dependency><!-- 通用工具--><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-common</artifactId></dependency></dependencies></project>
generator的
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://maven.apache.org/POM/4.0.0"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>ruoyi</artifactId><groupId>com.ruoyi</groupId><version>3.8.5</version></parent><modelVersion>4.0.0</modelVersion><artifactId>ruoyi-generator</artifactId><packaging>jar</packaging><description>generator代碼生成</description><dependencies><!--velocity代碼生成使用模板 --><dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId></dependency><!-- collections工具類 --><dependency><groupId>commons-collections</groupId><artifactId>commons-collections</artifactId></dependency><!-- 通用工具--><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-common</artifactId></dependency></dependencies></project>
framwork的
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://maven.apache.org/POM/4.0.0"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>ruoyi</artifactId><groupId>com.ruoyi</groupId><version>3.8.5</version></parent><modelVersion>4.0.0</modelVersion><artifactId>ruoyi-framework</artifactId><packaging>jar</packaging><description>framework框架核心</description><dependencies><!-- SpringBoot Web容器 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- SpringBoot 攔截器 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency><!-- 阿里數據庫連接池 --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId></dependency><!-- 驗證碼 --><dependency><groupId>pro.fessional</groupId><artifactId>kaptcha</artifactId><exclusions><exclusion><artifactId>javax.servlet-api</artifactId><groupId>javax.servlet</groupId></exclusion></exclusions></dependency><!-- 獲取系統信息 --><dependency><groupId>com.github.oshi</groupId><artifactId>oshi-core</artifactId></dependency><!-- 系統模塊--><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-system</artifactId></dependency></dependencies></project>
ems的
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://maven.apache.org/POM/4.0.0"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.ruoyi</groupId><artifactId>ruoyi</artifactId><version>3.8.5</version></parent><artifactId>ruoyi-ems</artifactId><packaging>jar</packaging><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!-- spring-boot-devtools --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional> <!-- 表示依賴不會傳遞 --></dependency><!-- swagger3--><dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId></dependency><!-- 防止進入swagger頁面報類型轉換錯誤,排除3.0.0中的引用,手動增加1.6.2版本 --><dependency><groupId>io.swagger</groupId><artifactId>swagger-models</artifactId><version>1.6.2</version></dependency><!-- Mysql驅動包 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!-- 核心模塊--><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-framework</artifactId></dependency><!-- 定時任務--><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-quartz</artifactId></dependency><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-common</artifactId></dependency></dependencies></project>
admin的
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://maven.apache.org/POM/4.0.0"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>ruoyi</artifactId><groupId>com.ruoyi</groupId><version>3.8.5</version></parent><modelVersion>4.0.0</modelVersion><packaging>jar</packaging><artifactId>ruoyi-admin</artifactId><!-- <modules>-->
<!-- <module>../ruoyi-common</module>-->
<!-- <module>../ruoyi-ems</module>-->
<!-- <module>../ruoyi-framework</module>-->
<!-- <module>../ruoyi-generator</module>-->
<!-- <module>../ruoyi-quartz</module>-->
<!-- <module>../ruoyi-system</module>-->
<!-- </modules>--><description>web服務入口</description><dependencies><!-- spring-boot-devtools --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional> <!-- 表示依賴不會傳遞 --></dependency><!-- swagger3--><dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId></dependency><!-- 防止進入swagger頁面報類型轉換錯誤,排除3.0.0中的引用,手動增加1.6.2版本 --><dependency><groupId>io.swagger</groupId><artifactId>swagger-models</artifactId><version>1.6.2</version></dependency><!-- Mysql驅動包 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!-- 核心模塊--><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-framework</artifactId></dependency><!-- 定時任務--><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-quartz</artifactId></dependency><!-- 代碼生成--><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-generator</artifactId></dependency><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-ems</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.1.1.RELEASE</version><configuration><fork>true</fork> <!-- 如果沒有該配置,devtools不會生效 -->
<!-- <mainClass>com.ruoyi.RuoYiApplication</mainClass>--></configuration><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>3.1.0</version><configuration><failOnMissingWebXml>false</failOnMissingWebXml><warName>${project.artifactId}</warName></configuration></plugin></plugins><finalName>${project.artifactId}</finalName></build></project>
最后是父pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://maven.apache.org/POM/4.0.0"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.ruoyi</groupId><artifactId>ruoyi</artifactId><version>3.8.5</version><name>ruoyi</name><url>http://www.ruoyi.vip</url><description>若依管理系統</description><properties><ruoyi.version>3.8.5</ruoyi.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><maven-jar-plugin.version>3.1.1</maven-jar-plugin.version><druid.version>1.2.16</druid.version><bitwalker.version>1.21</bitwalker.version><swagger.version>3.0.0</swagger.version><kaptcha.version>2.3.3</kaptcha.version><pagehelper.boot.version>1.4.6</pagehelper.boot.version><fastjson.version>2.0.23</fastjson.version><oshi.version>6.4.0</oshi.version><commons.io.version>2.11.0</commons.io.version><commons.collections.version>3.2.2</commons.collections.version><poi.version>4.1.2</poi.version><velocity.version>2.3</velocity.version><jwt.version>0.9.1</jwt.version></properties><!-- 依賴聲明 --><dependencyManagement><dependencies><!-- SpringBoot的依賴配置--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.5.14</version><type>pom</type><scope>import</scope></dependency><!-- 阿里數據庫連接池 --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>${druid.version}</version></dependency><!-- 解析客戶端操作系統、瀏覽器等 --><dependency><groupId>eu.bitwalker</groupId><artifactId>UserAgentUtils</artifactId><version>${bitwalker.version}</version></dependency><!-- pagehelper 分頁插件 --><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>${pagehelper.boot.version}</version></dependency><!-- 獲取系統信息 --><dependency><groupId>com.github.oshi</groupId><artifactId>oshi-core</artifactId><version>${oshi.version}</version></dependency><!-- Swagger3依賴 --><dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>${swagger.version}</version><exclusions><exclusion><groupId>io.swagger</groupId><artifactId>swagger-models</artifactId></exclusion></exclusions></dependency><!-- io常用工具類 --><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>${commons.io.version}</version></dependency><!-- excel工具 --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>${poi.version}</version></dependency><!-- velocity代碼生成使用模板 --><dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId><version>${velocity.version}</version></dependency><!-- collections工具類 --><dependency><groupId>commons-collections</groupId><artifactId>commons-collections</artifactId><version>${commons.collections.version}</version></dependency><!-- 阿里JSON解析器 --><dependency><groupId>com.alibaba.fastjson2</groupId><artifactId>fastjson2</artifactId><version>${fastjson.version}</version></dependency><!-- Token生成與解析--><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>${jwt.version}</version></dependency><!-- 驗證碼 --><dependency><groupId>pro.fessional</groupId><artifactId>kaptcha</artifactId><version>${kaptcha.version}</version></dependency><!-- 定時任務--><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-quartz</artifactId><version>${ruoyi.version}</version></dependency><!-- 代碼生成--><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-generator</artifactId><version>${ruoyi.version}</version></dependency><!-- 核心模塊--><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-framework</artifactId><version>${ruoyi.version}</version></dependency><!-- 系統模塊--><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-system</artifactId><version>${ruoyi.version}</version></dependency><!-- 通用工具--><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-common</artifactId><version>${ruoyi.version}</version></dependency><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-ems</artifactId><version>3.8.5</version></dependency></dependencies></dependencyManagement><modules><module>ruoyi-admin</module><module>ruoyi-framework</module><module>ruoyi-system</module><module>ruoyi-quartz</module><module>ruoyi-generator</module><module>ruoyi-common</module><module>ruoyi-ems</module></modules><packaging>pom</packaging><dependencies></dependencies><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><encoding>${project.build.sourceEncoding}</encoding></configuration></plugin></plugins></build><repositories><repository><id>public</id><name>aliyun nexus</name><url>https://maven.aliyun.com/repository/public</url><releases><enabled>true</enabled></releases></repository></repositories><pluginRepositories><pluginRepository><id>public</id><name>aliyun nexus</name><url>https://maven.aliyun.com/repository/public</url><releases><enabled>true</enabled></releases><snapshots><enabled>false</enabled></snapshots></pluginRepository></pluginRepositories></project>
所以打包順序也是common-system-quartz-generator-framework-ems-admin-父pom