项目总结构:有maven 为父工程,子工程存在maven 和 springbot 项目 进行统一打包管理
打包成jar
1, 在最外层的父工程中 pom.xml添加 build
<packaging>pom</packaging>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.yml</include>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
</resource>
</resources>
<finalName>itxhy</finalName>
</build>
2, 在其他子工程(非springboot工程)pom.xml 添加 build
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<classifier>exec</classifier>
</configuration>
</plugin>
</plugins>
</build>
3,其他二级父工程或者三级父工程都只添加 packaging 即可
<packaging>pom</packaging>
4,在打包jar过程中提示 部分maven模块 【repackage failed: Unable to find main class】那尽量在没有启动类的模块上添加一个空启动类就行 代码如下:
public class Application {
public static void main(String[] args) {
}
}
5,在最外层的进行 打包 默认就是在唯一的springboot 项目 target 下有个 jar包。
打包成war
在原可以打包成jar的基础上进行修改配置进行打包war
1,在springboot项目的pom.xml中添加jar:
<packaging>war</packaging>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 移除springboot 内置的tomcat -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 加入对外部tomcat 的支持-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
2,在对应的springboot 工程中application.java 主启动上添加代码配置
@SpringBootApplication
// 1. extends SpringBootServletInitializer
// 2. @Override springboot 项目支持外部tomcat
public class MainApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(ServiceRoasterApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(ServiceRoasterApplication.class, args);
}
}
3,在最外层maven 项目相同位置进行packaging,成功则在唯一的springboot 项目 target 下有个 war包