- 操作过程
基于Maven的多模块合并打包部署操作过程如下:
- 创建Maven multi-module工程:在创建工程的时候需要选择创建类型为maven-archetype-quickstart下的maven-archetype-quickstart。
shell
mvn archetype:generate -DgroupId=com.example -DartifactId=my-module-parent -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false -DarchetypeVersion=1.4
- 配置父模块pom.xml文件:在父模块的pom.xml文件中,配置所有子模块的依赖和打包方式,一般为pom。示例如下:
xml
<project>
<groupId>com.example</groupId>
<artifactId>my-module-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>my-module-a</module>
<module>my-module-b</module>
</modules>
</project>
- 创建子模块:在项目根目录下创建子目录,用来存放子模块,在子目录中使用maven-archetype-quickstart类型创建子模块的工程骨架。
shell
cd my-module-parent
mvn archetype:generate -DgroupId=com.example -DartifactId=my-module-a -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false -DarchetypeVersion=1.4
- 子模块配置:在子模块的pom.xml文件中,配置该子模块的依赖等信息。示例如下:
xml
<project>
<parent>
<groupId>com.example</groupId>
<artifactId>my-module-parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>my-module-a</artifactId>
<name>My Module A</name>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
-
往子模块中添加功能:在子模块中添加自己的代码和资源文件等。
-
打包操作:打包操作需要在父模块目录下执行,使用以下命令完成打包:
shell
mvn package
此时就会把所有的子模块一起打包成一个jar或者war包。
- 部署操作:在打包成功的项目中,找到jar包或者war包,使用以下命令将其部署:
shell
java -jar my-module-parent-1.0-SNAPSHOT.jar
上面的命令中的my-module-parent-1.0-SNAPSHOT.jar可以根据实际情况替换成jar或者war包的名称。
-
示例说明
-
示例一:将数据库操作和Web操作分为两个子模块。
在创建工程的时候可以选择创建类型为maven-archetype-webapp下的maven-archetype-webapp。
首先创建父模块:
shell
mvn archetype:generate -DgroupId=com.example -DartifactId=web-parent -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false -DarchetypeVersion=1.4
然后创建两个子模块,如下所示:
```shell
cd web-parent
mvn archetype:generate -DgroupId=com.example -DartifactId=web-module -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false -DarchetypeVersion=1.4
mvn archetype:generate -DgroupId=com.example -DartifactId=db-module -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false -DarchetypeVersion=1.4
```
配置父模块的pom.xml文件,如下所示:
xml
<project>
<groupId>com.example</groupId>
<artifactId>web-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>db-module</module>
<module>web-module</module>
</modules>
</project>
配置子模块的pom.xml文件,如下所示:
db-module/pom.xml
xml
<project>
<parent>
<groupId>com.example</groupId>
<artifactId>web-parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>db-module</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.6</version>
</dependency>
</dependencies>
</project>
web-module/pom.xml
xml
<project>
<parent>
<groupId>com.example</groupId>
<artifactId>web-parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>web-module</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.example</groupId>
<artifactId>db-module</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
最后打包部署:
```shell
mvn package
java -jar web-module/target/web-module-1.0-SNAPSHOT.war
```
- 示例二:将不同模块的接口和实现分开管理。
首先创建父模块:
shell
mvn archetype:generate -DgroupId=com.example -DartifactId=service-parent -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false -DarchetypeVersion=1.4
然后创建接口模块和实现模块,如下所示:
```shell
cd service-parent
mvn archetype:generate -DgroupId=com.example -DartifactId=service-interface -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false -DarchetypeVersion=1.4
mvn archetype:generate -DgroupId=com.example -DartifactId=service-impl -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false -DarchetypeVersion=1.4
```
在service-parent/pom.xml中添加对两个模块的引用:
xml
<project>
<groupId>com.example</groupId>
<artifactId>service-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>service-interface</module>
<module>service-impl</module>
</modules>
</project>
修改service-interface/pom.xml中的代码,添加以下内容:
xml
<project>
<parent>
<groupId>com.example</groupId>
<artifactId>service-parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>service-interface</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
</project>
然后在service-impl/pom.xml中添加以下内容:
xml
<project>
<parent>
<groupId>com.example</groupId>
<artifactId>service-parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>service-impl</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>service-interface</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
在service-impl/src/main/java/com/example/service/impl中创建实现类:
```java
package com.example.service.impl;
import com.example.service.HelloService;
public class HelloServiceImpl implements HelloService {
@Override
public String sayHello(String name) {
return "Hello, " + name;
}
}
```
在service-interface/src/main/java/com/example/service中创建接口类:
```java
package com.example.service;
public interface HelloService {
String sayHello(String name);
}
```
最后打包部署service-impl:
```shell
mvn package
java -cp service-impl-1.0-SNAPSHOT.jar com.example.service.impl.HelloServiceImpl
```
以上是基于Maven的多模块合并打包部署的操作过程和相关示例说明,希望对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java 基于maven多模块合并打包部署的操作过程 - Python技术站