同福

Maven打包的时候指定POM配置文件和MainClass启动类的方法【20211208】

介绍

介绍

福哥在使用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>

home/topic/2021/1210/14/c440ed963668b264647bf501225ae7e5.png

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>

home/topic/2021/1210/14/c440ed963668b264647bf501225ae7e5.png

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>

home/topic/2021/1210/14/c440ed963668b264647bf501225ae7e5.png

maven还是尝试编译两个启动类,并报出了错误!

解决

经过福哥的各种测试,发现了一个规律!

貌似无论我们怎么配置,编译器都会尝试将每一个包含main方法的类当作启动类进行处理。

既然编译器一定要处理,福哥就给它排除掉就好了~

排除

福哥把默认的TfspringApplication排除掉,就保留一个TfspringApplicationPackage。

<excludes>
    <exclude>**/demo/**</exclude>
    <exclude>**/TfspringApplication.java</exclude>
</excludes>

home/topic/2021/1210/14/472956f588e6cc18764b89e77c035ec1.png

maven只报了TfspringApplicationPackage的错误!

总结

今天福哥带着童鞋们针对使用Maven打包的时候指定POM配置文件的方法,配置启动类的方法进行了一个系统测试和学习。

大家可以发现一个问题,有些东西没有自己实际地操作一下是得不到正确答案的,也就是:实践出真知!!!