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

最一开始使用的是SpringInitializr,后来网站更新之后,只能生成JDK17+的工程,WhatTheFuck?近期刚从8切换到11.
于是弃用并改用 StartAliyun。
今天调研ClickHouse,生成的工程pom-build是这个样子的 :
<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 SETTINGS 和 ProjectStructure了,检查的结果是这两个位置确实是1.5。
好消息是报错的直接原因找到了,坏消息是根本原因还没有找到。

在看一下报错log,发现了这一句话:
Failed to execute goal......
也就是说它找的是全局级别的设置,而不是我项目中设置的,那这个全局是在哪里呢?难道是maven的settings.xml?
同时将去掉的maven-compiler-plugin恢复回来package又正常了。这里基本可以确认 goal 就是指 Maven 的settings.xml了, 因为maven-compiler-plugin中设置了JDK。
那问题太似乎简单了,在settings.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 ,这个不喜欢用。
总结
- 遇事不要慌,心态最重要
- 不要怕麻烦,在不影响团队和交付物的情况下,应该死磕
- 平时知识的积累还是需要系统化一些,不可留在皮毛,亦或是参差不齐,应该是由浅入深,结构化,系统化。这样在遇到问题的时候排查思路和方向更靠谱
记录一次WhatTheFuck经历的更多相关文章
- 【记录一次坑经历】axios使用x-www-form-urlencoded 服务器报400(错误的请求。 )(后端.Net MVC5 WebApi OAuth,前端Electron-Vue)
首先放上源码 electron-vue axios 注册 import Vue from 'vue' import axios from 'axios' axios.defaults.baseUR ...
- 记录 SpringBoot 踩坑经历
1.spring-boot-starter-web 作用 <dependency> <groupId>org.springframework.boot</groupId& ...
- C/C++程序员 面试经历总结
最近在找工作,遇到了一些面试题,很惭愧的是很多都没答上来. 现在把一些问题总结一下,算是记录一下面试的经历吧.以后有空简单地回答一下, 同时也欢迎各位同仁解答,共同学习一下吧! 一.嵌入式C语言面 ...
- Linux 2.6内核中新的锁机制--RCU
转自:http://www.ibm.com/developerworks/cn/linux/l-rcu/ 一. 引言 众所周知,为了保护共享数据,需要一些同步机制,如自旋锁(spinlock),读写锁 ...
- 应用程序框架实战十六:DDD分层架构之值对象(介绍篇)
前面介绍了DDD分层架构的实体,并完成了实体层超类型的开发,同时提供了验证方面的支持.本篇将介绍另一个重要的构造块——值对象,它是聚合中的主要成分. 如果说你已经在使用DDD分层架构,但你却从来没有使 ...
- 漫谈JVM
背景介绍 JVM已经是Java开发的必备技能了,JVM相当于Java的操作系统. JVM,java virtual machine, 即Java虚拟机,是运行java class文件的程序. Java ...
- QTP安装连接Oracle数据库
之前学过一段时间QTP,之后便没用这个笨重的东东,为了以防忘记,再次记录下曾经连接数据库经历了几天才搞好的事情(虽然这个工具可能已经过时,但是国企一般都会使用的) 前提条件: 你已经安装好了QTP / ...
- iptables rule
和H3C中的acl很像,或者就是一会事,这就是不知道底层的缺陷,形式一变,所有的积累都浮云了 参考准确的说copy from http://www.ibm.com/developerworks/cn/ ...
- CentOS下 pycharm开发环境搭建之无穷无尽的问题
在上一篇的环境搭建中,表面上以为已经升级好python,安装好pycharm,并且可以用上了django框架,谁知道,谁知道,又是一断被虐的经历,我都要快恼羞成怒了. 在些记录一下我的经历. 1.首先 ...
- Volley(一 )—— 框架简介
一.引言 虽然网上已经有很多大神.高手都写过了类似的帖子,但作为新人,必须要走模仿的道路,再考虑超越,因此学习大神的笔记,记录自己的理解,是一个菜鸟走向成功的必经之路啊.如签名所言,记录自己摸爬滚打的 ...
随机推荐
- 简单写一个eventbus
前言 闲暇之余,简单写一个eventbus. 正文 什么是eventbus? eventbus 是一个开源的发布订阅模式的框架,用于简化程序间不同组件的通信. 它允许不同组件间松耦合通信,组件之间不通 ...
- linux 性能自我学习 ———— cpu 切换带来的性能损耗 [二]
前言 我们知道现在操作系统,都是多进程和多线程,那么会有一个操作系统帮助我们去切换进程和线程,这个是要消耗cpu资源的,那么就来了解一下cpu资源消耗情况. 正文 一般是下面几个场景切换: 进程上下文 ...
- log4j2 lookup漏洞修复方法
2021.12.10凌晨,Apache Log4j远程代码执行漏洞细节被公开,参考链接:https://unit42.paloaltonetworks.com/apache-log4j-vulnera ...
- Linux下安装配置OpenResty服务器
OpenResty是一款基于Nginx和Lua的高性能Web平台,在nginx基础之上集成了大量的lua库,第三方模块等,以便搭建各种处理高并发.可扩展的Web应用.服务或网关,并且OpenResty ...
- 牛客网-SQL专项训练16
①在book表中,将工具书类型(tool)的书的书架序号都减少2,下列语句正确的是(C) 解析: 题目要求的批量更改,insert 是更改数据,排除B,update与set搭配使用,排除选项D,whe ...
- 第 7章 Python 爬虫框架 Scrapy(上)
第 7章 Python 爬虫框架 Scrapy(上) 编写爬虫可以看成行军打仗,基本的角色有两个:士兵和将军,士兵冲锋陷阵,而将军更多地是调兵遣将.框架就像一个将军,里面包含了爬虫的全部流程.异常处理 ...
- 免费体验!阿里云智能LOGO帮你解决设计难题
简介:超实用!零基础搞定一个高大上的智能logo设计 新年过后,往往是大家一年中士气最足的时候,散去了年末的疲惫和emo,重燃对新一年的热情和希望. 想创业的朋友们同样意气风发,趁着新年的劲头想大干 ...
- 行业实战 | 5G+边缘计算+“自由视角” 让体育赛事更畅快
简介: 世界本是多维的.进入5G时代,观众对多维度视觉体验的需求日益增长,5G MEC网络与边缘计算的结合,具备大带宽.低延迟特性,使视频多维视觉呈现成为现实.在第二十三届CUBA中国大学生篮球联赛期 ...
- dotnet OpenXML 利用合并表格单元格在 PPT 文档插入不可见的额外版权信息
本文告诉大家如何利用 Office 对于 OpenXML 支持的特性,在 PPT 的表格里面,通过合并单元格存放一些额外的信息,这些信息对用户来说是不可见的,但是进行拷贝表格等的时候,可以保存此信息内 ...
- SAP集成技术(五)集成风格
上一节介绍了各种集成架构,这一节将介绍各种集成风格(Style).我们在日常工作中使用这些集成风格来分类不同类型的集成场景.本文将遵循SAP的集成解决方案咨询方法(ISA - M)使用的方法,将集成风 ...