使用 Spring Boot 的多模块 maven 示例
我想知道如何使用 Spring Boot 使用 maven 创建一个多模块项目.
I want to know how i can create a multi module project with maven using Spring Boot.
谁能给我看一个parent-pom"和child-pom"的例子?
Can someone show me an example of the "parent-pom" and "child-pom"?
谢谢
这个问题太简单不好回答或者太复杂看不懂,否则我无法解释为什么没有答案.
This question is too simple to answer or too complex to be understood, otherwise I cannot explain why there are no answers.
我会选择使用如下文件夹结构的解决方案
I would go for a solution that uses a folder structure like the following
project folder
|---pom.xml
|---module1
|---pom.xml
|---src
|---module2
|---pom.xml
|---src
|---module3
|---pom.xml
|---src
我会用 pom 包装定义项目的 pom.xml
,例如:
I would define the pom.xml
of the project with a pom packaging, e.g.:
<?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>1.2.7-RELEASE</version>
<relativePath/>
</parent>
<groupId>com.myproject</groupId>
<artifactId>project</artifactId>
<packaging>pom</packaging>
<version>0.0.1-SNAPSHOT</version>
<modules>
<module>module1</module>
<module>module2</module>
<module>module3</module>
</modules>
<name>MySupercoolProject</name>
<description>What else?</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<!-- Put here dependencies shared by your project -->
</dependencies>
</project>
如您所见,您项目的父项将是 spring-boot-starter-parent
.
As you see, the parent of your project will be a spring-boot-starter-parent
.
然后,您的模块之一的 pom.xml
将是,例如:
Then, the pom.xml
of one of your modules will be, for instance:
<?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>com.myproject</groupId>
<artifactId>project</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>com.myproject</groupId>
<artifactId>module1</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>Application</name>
<description>SudenGut application</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<start-class>com.myproject.MyApplication</start-class>
<java.version>1.8</java.version>
<tomcat.version>8.0.24</tomcat.version>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--- this will not be enough to provide a cool app :) -->
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins
</build>
</project>
其中主应用程序是 module1
的 com.myproject
包中的 MyApplication.java
.
where the main application is MyApplication.java
in package com.myproject
of module1
.
我会在没有主应用程序的情况下为其他模块使用 jar 包装,除非您有其他子模块(即再次使用 pom 包装).
I would use the jar packaging for the other modules without a main application, unless you have other submodules (i.e., pom packaging again).