项目结构图如下:
在SpringBoot多模块项目打包时遇见如下错误:
1、repackage failed: Unable to find main class -> [Help 1]
解决步骤:
(1)删除父pom中的build标签
(2)在web模块的pom中配置,指定启动类,其他模块中不需要配置:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>com.dh.yjt.SpringBootDemo.SpringBootDemoApplication</mainClass> </configuration> </plugin> </plugins> </build>
2、[ERROR] /xxx.java:[16,39] 程序包com.xx..xxx不存在
解决办法:删除其他模块中的build标签
3、springboot打包与配置文件外置
https://blog.csdn.net/pei19890521/article/details/80984707
最终pom及package文件如下:
<?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>SpringBootDemo</artifactId> <groupId>com.dh.yjt</groupId> <version>0.0.1-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>mySystem-web</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>mySystem-web Maven Webapp</name> <url>http://127.0.0.1/com.dh.yjt.SpringBootDemo.domain.index</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>com.dh.yjt</groupId> <artifactId>mySystem-config</artifactId> <version>0.0.1-SNAPSHOT</version> <scope>compile</scope> </dependency> <dependency> <groupId>com.dh.yjt</groupId> <artifactId>mySystem-dao</artifactId> <version>0.0.1-SNAPSHOT</version> <scope>compile</scope> </dependency> <dependency> <groupId>com.dh.yjt</groupId> <artifactId>mySystem-common</artifactId> <version>0.0.1-SNAPSHOT</version> <scope>compile</scope> </dependency> <dependency> <groupId>com.dh.yjt</groupId> <artifactId>mySystem-service</artifactId> <version>0.0.1-SNAPSHOT</version> <scope>compile</scope> </dependency> <dependency> <groupId>com.dh.yjt</groupId> <artifactId>mySystem-domain</artifactId> <version>0.0.1-SNAPSHOT</version> <scope>compile</scope> </dependency> <!-- xml配置 --> <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId> </dependency> <dependency> <groupId>com.jd.jmq</groupId> <artifactId>jmq-model</artifactId> <version>2.1.4</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <mainClass>com.dh.yjt.SpringBootDemo.SpringBootDemoApplication</mainClass> </manifest> </archive> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <configuration> <descriptors> <descriptor>src/main/resources/package.xml</descriptor> </descriptors> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
package.xml:
<?xml version="1.0" encoding="UTF-8"?> <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd"> <id>package</id> <formats> <format>tar.gz</format> </formats> <includeBaseDirectory>true</includeBaseDirectory> <fileSets> <fileSet> <directory>${project.basedir}</directory> <outputDirectory>/</outputDirectory> <includes> <include>*.sql</include> <include>*.bat</include> <include>*.md</include> </includes> </fileSet> <fileSet> <directory>${project.basedir}/src/main/resources/bin</directory> <outputDirectory>../</outputDirectory> <includes> <include>bin/*.sh</include> <include>*.sh</include> </includes> </fileSet> <fileSet> <directory>${project.basedir}/src/main/resources</directory> <outputDirectory>/conf</outputDirectory> <includes> <include>config/*.xml</include> <include>config/*.properties</include> <include>*.properties</include> </includes> </fileSet> <fileSet> <directory>${project.build.directory}</directory> <outputDirectory>/</outputDirectory> <includes> <include>*.jar</include> </includes> </fileSet> </fileSets> </assembly>