Maven multi-module project pluggable packaging and deployment solution
need
The early [train-hubs] and [train-hubs-ztrip] were two independent projects. We hope to merge the two projects into one through this optimization and transformation, but without affecting the previous functions. Previous function: One environment deployed two services (that is to say, this environment has all the functions of these two services), but the other service only needs to provide the function of [train-hubs-ztrip]. Therefore, during the transformation, we need to first build a suitable project structure so that the above functions can be realized and the modules can be plugged and deployed.
Preparation before research
First prepare a multi-module project according to the general idea to facilitate the research of deployment solutions. Below we assume that [maven-inside] is the early [train-hubs-ztrip], [maven-outside] is the early [train-hubs], [maven-common] is [maven-inside] and [maven-outside] Commonly dependent modules (abstraction layer), [maven-jar] depends on [maven-inside] and [maven-outside] for pluggable functional effect implementation.
Project structure
Dependencies between modules
Project pom file
maven-package/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>
<groupId>com.maven</groupId>
<artifactId>maven-package</artifactId>
<packaging>pom</packaging>
<version>${revision}</version>
<modules>
<module>maven-common</module>
<module>maven-jar</module>
<module>maven-outside</module>
<module>maven-inside</module>
</modules>
<properties>
<revision>1.0-SNAPSHOT</revision>
<lombok-version>1.16.20</lombok-version>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.0.RELEASE</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok-version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<!-- 解决maven使用revision作为版本号部署错误的问题 -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>flatten-maven-plugin</artifactId>
<version>1.2.7</version>
<configuration>
<updatePomFile>true</updatePomFile>
<flattenMode>resolveCiFriendliesOnly</flattenMode>
</configuration>
<executions>
<execution>
<id>flatten</id>
<phase>process-resources</phase>
<goals>
<goal>flatten</goal>
</goals>
</execution>
<execution>
<id>flatten.clean</id>
<phase>clean</phase>
<goals>
<goal>clean</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
maven-package/maven-common/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">
<parent>
<artifactId>maven-package</artifactId>
<groupId>com.maven</groupId>
<version>${revision}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>maven-common</artifactId>
<packaging>jar</packaging>
</project>
maven-package/maven-inside/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">
<parent>
<artifactId>maven-package</artifactId>
<groupId>com.maven</groupId>
<version>${revision}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>maven-inside</artifactId>
<dependencies>
<dependency>
<groupId>com.maven</groupId>
<artifactId>maven-common</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>
maven-package/maven-outside/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">
<parent>
<artifactId>maven-package</artifactId>
<groupId>com.maven</groupId>
<version>${revision}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>maven-outside</artifactId>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>com.maven</groupId>
<artifactId>maven-common</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>
maven-package/maven-jar/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">
<parent>
<artifactId>maven-package</artifactId>
<groupId>com.maven</groupId>
<version>${revision}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>maven-jar</artifactId>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>com.maven</groupId>
<artifactId>maven-outside</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.maven</groupId>
<artifactId>maven-inside</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Project code
AbstractBooking.java
package com.common;
/**
* @author honey
* @date 2023-01-30 18:58:40
*/
public abstract class AbstractBooking {
/**
* 创建订单
* @return String
*/
public abstract String createOrder();
}
InsideBookingStrategy.java
package com.inside;
import com.common.AbstractBooking;
/**
* @author honey
* @date 2023-01-30 18:57:03
*/
public class InsideBookingStrategy extends AbstractBooking {
@Override
public String createOrder() {
return "inside";
}
}
OutsideBookingStrategy.java
package com.outside;
import com.common.AbstractBooking;
/**
* @author honey
* @date 2023-01-30 18:57:03
*/
public class OutsideBookingStrategy extends AbstractBooking {
@Override
public String createOrder() {
return "outside";
}
}
DemoController.java
package com.maven.controller;
import com.common.AbstractBooking;
import org.springframework.context.ApplicationContext;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* @author honey
* @date 2023-01-31 14:58:30
*/
@RestController
public class DemoController {
@Resource
private ApplicationContext applicationContext;
@GetMapping("/demo")
public String demo(String strategy) {
// insideBookingStrategy
AbstractBooking abstractBooking = applicationContext.getBean(strategy, AbstractBooking.class);
return abstractBooking.createOrder();
}
}
Code running effect
Call the test interface class after starting the project
Program research
Effects to be achieved
Complete packaging: It can not only deploy services with the functions of both [maven-inside] and [maven-outside] modules;
plug-in packaging: it can also deploy services with only the function of [maven-inside] module;
solution
Packaging and deployment by specifying different pom.xml files
Code
Add inside-pom.xml under the maven-jar module
<?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">
<parent>
<artifactId>maven-package</artifactId>
<groupId>com.maven</groupId>
<version>${revision}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>maven-jar</artifactId>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>com.maven</groupId>
<artifactId>maven-inside</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Add inside-pom.xml under the maven-package parent module
<?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>
<groupId>com.maven</groupId>
<artifactId>maven-package</artifactId>
<packaging>pom</packaging>
<version>${revision}</version>
<modules>
<module>maven-common</module>
<module>maven-inside</module>
</modules>
<properties>
<revision>1.0-SNAPSHOT</revision>
<lombok-version>1.16.20</lombok-version>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.0.RELEASE</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok-version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<!-- 解决maven使用revision作为版本号部署错误的问题 -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>flatten-maven-plugin</artifactId>
<version>1.2.7</version>
<configuration>
<updatePomFile>true</updatePomFile>
<flattenMode>resolveCiFriendliesOnly</flattenMode>
</configuration>
<executions>
<execution>
<id>flatten</id>
<phase>process-resources</phase>
<goals>
<goal>flatten</goal>
</goals>
</execution>
<execution>
<id>flatten.clean</id>
<phase>clean</phase>
<goals>
<goal>clean</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Add install.sh under the maven-package parent module
#!/bin/sh
# shellcheck disable=SC2039
if [ "$1" == "i" ];then
mvn clean install -f inside-pom.xml;
mvn clean install -f maven-jar/inside-pom.xml
else
mvn clean install -pl maven-jar -am
fi
# sh install.sh i
# sh install.sh
Package running effect
Complete package testing
sh install.sh
s@HONEYYXK-ID9999 MINGW64 /e/知识点资料(第二年)/Maven多模块项目打包部署方案/maven-package
$ sh install.sh
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] maven-package [pom]
[INFO] maven-common [jar]
[INFO] maven-outside [jar]
[INFO] maven-inside [jar]
[INFO] maven-jar [jar]
[INFO]
[INFO] ----------------------< com.maven:maven-package >-----------------------
[INFO] Building maven-package 1.0-SNAPSHOT [1/5]
[INFO] --------------------------------[ pom ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:3.1.0:clean (default-clean) @ maven-package ---
[INFO]
[INFO] --- maven-install-plugin:2.5.2:install (default-install) @ maven-package ---
[INFO] Installing E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\pom.xml to D:\maven_jar\com\maven\maven-package\1.0-SNAPSHOT\maven-package-1.0-SNAPSHOT.pom
[INFO]
[INFO] -----------------------< com.maven:maven-common >-----------------------
[INFO] Building maven-common 1.0-SNAPSHOT [2/5]
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:3.1.0:clean (default-clean) @ maven-common ---
[INFO] Deleting E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-common\target
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ maven-common ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-common\src\main\resources
[INFO] skip non existing resourceDirectory E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-common\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ maven-common ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-common\target\classes
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:testResources (default-testResources) @ maven-common ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-common\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ maven-common ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-surefire-plugin:2.22.2:test (default-test) @ maven-common ---
[INFO] No tests to run.
[INFO]
[INFO] --- maven-jar-plugin:3.2.0:jar (default-jar) @ maven-common ---
[INFO] Building jar: E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-common\target\maven-common-1.0-SNAPSHOT.jar
[INFO]
[INFO] --- maven-install-plugin:2.5.2:install (default-install) @ maven-common ---
[INFO] Installing E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-common\target\maven-common-1.0-SNAPSHOT.jar to D:\maven_jar\com\maven\maven-common\1.0-SNAPSHO
T\maven-common-1.0-SNAPSHOT.jar
[INFO] Installing E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-common\pom.xml to D:\maven_jar\com\maven\maven-common\1.0-SNAPSHOT\maven-common-1.0-SNAPSHOT.p
om
[INFO]
[INFO] ----------------------< com.maven:maven-outside >-----------------------
[INFO] Building maven-outside 1.0-SNAPSHOT [3/5]
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:3.1.0:clean (default-clean) @ maven-outside ---
[INFO] Deleting E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-outside\target
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ maven-outside ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO] Copying 1 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ maven-outside ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 2 source files to E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-outside\target\classes
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:testResources (default-testResources) @ maven-outside ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-outside\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ maven-outside ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-surefire-plugin:2.22.2:test (default-test) @ maven-outside ---
[INFO] No tests to run.
[INFO]
[INFO] --- maven-jar-plugin:3.2.0:jar (default-jar) @ maven-outside ---
[INFO] Building jar: E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-outside\target\maven-outside-1.0-SNAPSHOT.jar
[INFO]
[INFO] --- maven-install-plugin:2.5.2:install (default-install) @ maven-outside ---
[INFO] Installing E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-outside\target\maven-outside-1.0-SNAPSHOT.jar to D:\maven_jar\com\maven\maven-outside\1.0-SNAP
SHOT\maven-outside-1.0-SNAPSHOT.jar
[INFO] Installing E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-outside\pom.xml to D:\maven_jar\com\maven\maven-outside\1.0-SNAPSHOT\maven-outside-1.0-SNAPSHO
T.pom
[INFO]
[INFO] -----------------------< com.maven:maven-inside >-----------------------
[INFO] Building maven-inside 1.0-SNAPSHOT [4/5]
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:3.1.0:clean (default-clean) @ maven-inside ---
[INFO] Deleting E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-inside\target
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ maven-inside ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO] Copying 1 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ maven-inside ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 2 source files to E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-inside\target\classes
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:testResources (default-testResources) @ maven-inside ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-inside\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ maven-inside ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-surefire-plugin:2.22.2:test (default-test) @ maven-inside ---
[INFO] No tests to run.
[INFO]
[INFO] --- maven-jar-plugin:3.2.0:jar (default-jar) @ maven-inside ---
[INFO] Building jar: E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-inside\target\maven-inside-1.0-SNAPSHOT.jar
[INFO]
[INFO] --- maven-install-plugin:2.5.2:install (default-install) @ maven-inside ---
[INFO] Installing E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-inside\target\maven-inside-1.0-SNAPSHOT.jar to D:\maven_jar\com\maven\maven-inside\1.0-SNAPSHO
T\maven-inside-1.0-SNAPSHOT.jar
[INFO] Installing E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-inside\pom.xml to D:\maven_jar\com\maven\maven-inside\1.0-SNAPSHOT\maven-inside-1.0-SNAPSHOT.p
om
[INFO]
[INFO] ------------------------< com.maven:maven-jar >-------------------------
[INFO] Building maven-jar 1.0-SNAPSHOT [5/5]
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:3.1.0:clean (default-clean) @ maven-jar ---
[INFO] Deleting E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-jar\target
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ maven-jar ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ maven-jar ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 2 source files to E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-jar\target\classes
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:testResources (default-testResources) @ maven-jar ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-jar\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ maven-jar ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-surefire-plugin:2.22.2:test (default-test) @ maven-jar ---
[INFO] No tests to run.
[INFO]
[INFO] --- maven-jar-plugin:3.2.0:jar (default-jar) @ maven-jar ---
[INFO] Building jar: E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-jar\target\maven-jar.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:2.3.0.RELEASE:repackage (repackage) @ maven-jar ---
[INFO] Replacing main artifact with repackaged archive
[INFO]
[INFO] --- maven-install-plugin:2.5.2:install (default-install) @ maven-jar ---
[INFO] Installing E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-jar\target\maven-jar.jar to D:\maven_jar\com\maven\maven-jar\1.0-SNAPSHOT\maven-jar-1.0-SNAPSH
OT.jar
[INFO] Installing E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-jar\pom.xml to D:\maven_jar\com\maven\maven-jar\1.0-SNAPSHOT\maven-jar-1.0-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for maven-package 1.0-SNAPSHOT:
[INFO]
[INFO] maven-package ...................................... SUCCESS [ 0.351 s]
[INFO] maven-common ....................................... SUCCESS [ 1.377 s]
[INFO] maven-outside ...................................... SUCCESS [ 0.421 s]
[INFO] maven-inside ....................................... SUCCESS [ 0.378 s]
[INFO] maven-jar .......................................... SUCCESS [ 1.491 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.398 s
[INFO] Finished at: 2023-02-03T18:34:18+08:00
[INFO] ------------------------------------------------------------------------
Run the Jar package in the maven-jar directory
java -jar maven-jar-1.0-SNAPSHOT.jar
Test effect: can have the functions of two modules
Plug-in packaging test
sh install.sh i
s@HONEYYXK-ID9999 MINGW64 /e/知识点资料(第二年)/Maven多模块项目打包部署方案/maven-package
$ sh install.sh i
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] maven-package [pom]
[INFO] maven-common [jar]
[INFO] maven-inside [jar]
[INFO]
[INFO] ----------------------< com.maven:maven-package >-----------------------
[INFO] Building maven-package 1.0-SNAPSHOT [1/3]
[INFO] --------------------------------[ pom ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:3.1.0:clean (default-clean) @ maven-package ---
[INFO]
[INFO] --- flatten-maven-plugin:1.2.7:clean (flatten.clean) @ maven-package ---
[INFO]
[INFO] --- flatten-maven-plugin:1.2.7:flatten (flatten) @ maven-package ---
[INFO] Generating flattened POM of project com.maven:maven-package:pom:1.0-SNAPSHOT...
[INFO]
[INFO] --- maven-install-plugin:2.5.2:install (default-install) @ maven-package ---
[INFO] Installing E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\.flattened-pom.xml to D:\maven_jar\com\maven\maven-package\1.0-SNAPSHOT\maven-package-1.0-SNAPSHOT.p
om
[INFO]
[INFO] -----------------------< com.maven:maven-common >-----------------------
[INFO] Building maven-common 1.0-SNAPSHOT [2/3]
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:3.1.0:clean (default-clean) @ maven-common ---
[INFO] Deleting E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-common\target
[INFO]
[INFO] --- flatten-maven-plugin:1.2.7:clean (flatten.clean) @ maven-common ---
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ maven-common ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-common\src\main\resources
[INFO] skip non existing resourceDirectory E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-common\src\main\resources
[INFO]
[INFO] --- flatten-maven-plugin:1.2.7:flatten (flatten) @ maven-common ---
[INFO] Generating flattened POM of project com.maven:maven-common:jar:1.0-SNAPSHOT...
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ maven-common ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-common\target\classes
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:testResources (default-testResources) @ maven-common ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-common\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ maven-common ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-surefire-plugin:2.22.2:test (default-test) @ maven-common ---
[INFO] No tests to run.
[INFO]
[INFO] --- maven-jar-plugin:3.2.0:jar (default-jar) @ maven-common ---
[INFO] Building jar: E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-common\target\maven-common-1.0-SNAPSHOT.jar
[INFO]
[INFO] --- maven-install-plugin:2.5.2:install (default-install) @ maven-common ---
[INFO] Installing E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-common\target\maven-common-1.0-SNAPSHOT.jar to D:\maven_jar\com\maven\maven-common\1.0-SNAPSHO
T\maven-common-1.0-SNAPSHOT.jar
[INFO] Installing E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-common\.flattened-pom.xml to D:\maven_jar\com\maven\maven-common\1.0-SNAPSHOT\maven-common-1.0
-SNAPSHOT.pom
[INFO]
[INFO] -----------------------< com.maven:maven-inside >-----------------------
[INFO] Building maven-inside 1.0-SNAPSHOT [3/3]
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:3.1.0:clean (default-clean) @ maven-inside ---
[INFO] Deleting E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-inside\target
[INFO]
[INFO] --- flatten-maven-plugin:1.2.7:clean (flatten.clean) @ maven-inside ---
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ maven-inside ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO] Copying 1 resource
[INFO]
[INFO] --- flatten-maven-plugin:1.2.7:flatten (flatten) @ maven-inside ---
[INFO] Generating flattened POM of project com.maven:maven-inside:jar:1.0-SNAPSHOT...
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ maven-inside ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 2 source files to E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-inside\target\classes
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:testResources (default-testResources) @ maven-inside ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-inside\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ maven-inside ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-surefire-plugin:2.22.2:test (default-test) @ maven-inside ---
[INFO] No tests to run.
[INFO]
[INFO] --- maven-jar-plugin:3.2.0:jar (default-jar) @ maven-inside ---
[INFO] Building jar: E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-inside\target\maven-inside-1.0-SNAPSHOT.jar
[INFO]
[INFO] --- maven-install-plugin:2.5.2:install (default-install) @ maven-inside ---
[INFO] Installing E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-inside\target\maven-inside-1.0-SNAPSHOT.jar to D:\maven_jar\com\maven\maven-inside\1.0-SNAPSHO
T\maven-inside-1.0-SNAPSHOT.jar
[INFO] Installing E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-inside\.flattened-pom.xml to D:\maven_jar\com\maven\maven-inside\1.0-SNAPSHOT\maven-inside-1.0
-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for maven-package 1.0-SNAPSHOT:
[INFO]
[INFO] maven-package ...................................... SUCCESS [ 0.967 s]
[INFO] maven-common ....................................... SUCCESS [ 1.224 s]
[INFO] maven-inside ....................................... SUCCESS [ 0.407 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.976 s
[INFO] Finished at: 2023-02-03T19:25:15+08:00
[INFO] ------------------------------------------------------------------------
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------< com.maven:maven-jar >-------------------------
[INFO] Building maven-jar 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:3.1.0:clean (default-clean) @ maven-jar ---
[INFO] Deleting E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-jar\target
[INFO]
[INFO] --- flatten-maven-plugin:1.2.7:clean (flatten.clean) @ maven-jar ---
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ maven-jar ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 0 resource
[INFO]
[INFO] --- flatten-maven-plugin:1.2.7:flatten (flatten) @ maven-jar ---
[INFO] Generating flattened POM of project com.maven:maven-jar:jar:1.0-SNAPSHOT...
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ maven-jar ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 2 source files to E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-jar\target\classes
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:testResources (default-testResources) @ maven-jar ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-jar\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ maven-jar ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-surefire-plugin:2.22.2:test (default-test) @ maven-jar ---
[INFO] No tests to run.
[INFO]
[INFO] --- maven-jar-plugin:3.2.0:jar (default-jar) @ maven-jar ---
[INFO] Building jar: E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-jar\target\maven-jar.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:2.3.0.RELEASE:repackage (repackage) @ maven-jar ---
[INFO] Replacing main artifact with repackaged archive
[INFO]
[INFO] --- maven-install-plugin:2.5.2:install (default-install) @ maven-jar ---
[INFO] Installing E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-jar\target\maven-jar.jar to D:\maven_jar\com\maven\maven-jar\1.0-SNAPSHOT\maven-jar-1.0-SNAPSH
OT.jar
[INFO] Installing E:\知识点资料(第二年)\Maven多模块项目打包部署方案\maven-package\maven-jar\.flattened-pom.xml to D:\maven_jar\com\maven\maven-jar\1.0-SNAPSHOT\maven-jar-1.0-SNAPSHOT
.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.623 s
[INFO] Finished at: 2023-02-03T19:25:22+08:00
[INFO] ------------------------------------------------------------------------
Run the Jar package in the maven-jar directory
java -jar maven-jar-1.0-SNAPSHOT.jar
Test effect: only has the functions of the [maven-inside] module
Best Practices
Project structure
Test running effect
Complete package testing
Jenkins configuration
Test results after project launch
Plug-in packaging test
Jenkins configuration
Test results after project launch