介绍
介绍
福哥在使用Maven打包TFSpring项目的时候,遇到了一个问题,就是调试类的程序不想打包到jar库包里面去,并且测试启动类也不想打包到jar库包里面去。
要实现这些先要把POM配置文件分开多个版本,调试时候用一个版本,打包时候用一个版本。
启动类也要分开多个版本,调试一个版本,打包一个版本。
今天福哥就带着大家来了解一下如何将项目的POM配置文件和启动类分开多个版本。
MainClass启动类
SpringBoot
start-class
网上有人说,在properties下面通过start-class设置启动类,福哥照着做了一下。
<properties> <java.version>13</java.version> <start-class>net.tongfu.tfspring.TfspringApplicationPackage</start-class> </properties>
事实证明,无效!
maven依然尝试编译两个启动类,并报出了错误!
plugin
网上还有人说,增加springframework的plugin,通过mainClass设置启动了,福哥又尝试了一下。
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>net.tongfu.tfspring.TfspringApplicationPackage</mainClass> </configuration> </plugin>
事实证明,依然无效!
maven还是尝试编译两个启动类,并报出了错误!
Maven
pluginManagement
还有人说,在pluginManagement里面增加maven-compiler-plugin,设置mainClass,福哥也弄了一下。
<pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.0</version> <configuration> <archive> <manifest> <addDefaultImplementationEntries>true</addDefaultImplementationEntries> <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries> <addClasspath>true</addClasspath> <mainClass>net.tongfu.tfspring.TfspringApplicationPackage</mainClass> </manifest> </archive> </configuration> </plugin> </plugins> </pluginManagement>
事实证明,还是无效!
maven还是尝试编译两个启动类,并报出了错误!
解决
经过福哥的各种测试,发现了一个规律!
貌似无论我们怎么配置,编译器都会尝试将每一个包含main方法的类当作启动类进行处理。
既然编译器一定要处理,福哥就给它排除掉就好了~
排除
福哥把默认的TfspringApplication排除掉,就保留一个TfspringApplicationPackage。
<excludes> <exclude>**/demo/**</exclude> <exclude>**/TfspringApplication.java</exclude> </excludes>
测试一下,成功了!
maven只报了TfspringApplicationPackage的错误!
总结
今天福哥带着童鞋们针对使用Maven打包的时候指定POM配置文件的方法,配置启动类的方法进行了一个系统测试和学习。
大家可以发现一个问题,有些东西没有自己实际地操作一下是得不到正确答案的,也就是:实践出真知!!!