记录一次WhatTheFuck经历

起因

很早之前就一直在维护一个git仓库,平时调研什么组件就会在里面新建一个springboot的工程用来编写示例代码。

最一开始使用的是SpringInitializr,后来网站更新之后,只能生成JDK17+的工程,WhatTheFuck?近期刚从8切换到11.

于是弃用并改用 StartAliyun

今天调研ClickHouse,生成的工程pom-build是这个样子的 :

xml 复制代码
 <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>11</source>
                    <target>11</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version>
                <configuration>
                    <mainClass>com.ramble.clickhouse.ClickhouseApplication</mainClass>
                    <skip>true</skip>
                </configuration>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

然后发现打的jar只有7KB,WhatTheFuck!我需要它能生成可以正常运行的jar。

后面就是围绕怎么让maven输出jar展开了。

使用Spring-boot-maven-plugin打包

思虑片刻,想起来了,之前遇到过这样的问题,原因是用maven-compiler-plugin 打包就不行,需要用Spring-boot-maven-plugin,于是删除了 maven-compiler-plugin 所在的plugin节点。

新问题出现了:

复制代码
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project clickhouse: Compilation failure: Compilation failure: 
[ERROR] 不再支持源选项 5。请使用 6 或更高版本。
[ERROR] 不再支持目标选项 1.5。请使用 1.6 或更高版本。

WhatTheFuck!!!怎么还1.5了,那里冒出来的,明明在StartAliyun选中的是11。

解决1.5问题

可以肯定的是打包的时候找到的JDK版本是1.5,而预期的是11,预期和实际不一致,所以是设置的问题。

按照经验来说这时候该检查 IDEA SETTINGSProjectStructure了,检查的结果是这两个位置确实是1.5。

好消息是报错的直接原因找到了,坏消息是根本原因还没有找到。

在看一下报错log,发现了这一句话:

Failed to execute goal......

也就是说它找的是全局级别的设置,而不是我项目中设置的,那这个全局是在哪里呢?难道是maven的settings.xml?

同时将去掉的maven-compiler-plugin恢复回来package又正常了。这里基本可以确认 goal 就是指 Maven 的settings.xml了, 因为maven-compiler-plugin中设置了JDK。

那问题太似乎简单了,在settings.xml中设置一下不就行了,代码如下:

xml 复制代码
<profile>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>11</maven.compiler.source>  
        <maven.compiler.target>11</maven.compiler.target>  
    </properties>
</profile>

满心欢喜的试一波,哎哟,package不报错了。

然而,生成的jar还是7KB。。。。。。 WhatTheFuck.....

先稳一波,虽然通过设置全局解决了,但是也仅解决了当下的问题,万一明天再搞个JDK22的项目,不还是会预期和实际不一致???

既然全局的settings.xml中设置jdk生效,那工程中设置一样生效,因为依稀记得好好好几年前撸MAVEN的时候工程中的配置会覆盖全局的,于是在pom中的properties下添加上述配置,果然好使。

skip

后面的故事就是:

  • 反复观看package-log
  • 反复检验生成的代码
  • baidu&google
  • chatGPT
  • ......

最终,当我把这个工程的pom和其他正常的工程pom做对比的时候,发现多了一个skip=true的配置

复制代码
<build>
    <plugins>
        <plugin>
            ......
            <configuration>
                ......
                <skip>true</skip>
            </configuration>
           ......
        </plugin>
    </plugins>
</build>

skip什么意思?跳过。

你要跳过什么?反正你是跳过了!跳过了就7KB了!!!

精准搜索了一下,这里的跳过是:跳过打包

WhatTheFuck......

注释这个之后,问题确实解决了,好了,天晴了,雨停了......

可是,为什么StartAliyun默认要Skip=true呢?着实想不明白,不行我还得找找其他的 Initializr ,这个不喜欢用。

总结

  • 遇事不要慌,心态最重要
  • 不要怕麻烦,在不影响团队和交付物的情况下,应该死磕
  • 平时知识的积累还是需要系统化一些,不可留在皮毛,亦或是参差不齐,应该是由浅入深,结构化,系统化。这样在遇到问题的时候排查思路和方向更靠谱
相关推荐
清木青青1 小时前
maven中的scope理解,你学会了吗?
maven
苦学编程的谢6 小时前
Maven
java·maven·intellij-idea
考虑考虑6 小时前
Maven 依赖范围(Scope)
java·后端·maven
程序员张316 小时前
Maven编译和打包插件
java·spring boot·maven
代码的余温1 天前
5种高效解决Maven依赖冲突的方法
java·maven
paishishaba1 天前
Maven
java·maven
代码的余温2 天前
Maven引入第三方JAR包实战指南
java·maven·jar
Wyc724092 天前
Maven
java·数据库·maven
逆风局?2 天前
Maven高级——分模块设计与开发
java·maven
周某某~2 天前
maven详解
java·maven