发表于: 2020-10-21 23:20:11
1 1996
今天完成的事情:
使用maven跑jar包,报错maven_java-1.0-SNAPSHOT.jar中没有主清单属性
使用的百度的几个办法都不行

然后师兄说需要修改<mainClass>xxxx</mainClass>xxx的内容,不懂mainClass是什么意思。
在IDEA中值得就是这个地址
最终的结果是这个
但这这样试了还是出错
最后还是师兄发现是加了pluginManagement,把pluginManagement删掉,就不报错了。

了解一下jar文件内容的内容意思:(参考网址:https://blog.csdn.net/tiantang_1986/article/details/50981615)
一. 一般属性
1. Manifest-Version
用来定义manifest文件的版本,例如:Manifest-Version: 1.0
2. Created-By
声明该文件的生成者,一般该属性是由jar命令行工具生成的,例如:Created-By: Apache Ant 1.5.1
3. Signature-Version
定义jar文件的签名版本
4. Class-Path
应用程序或者类装载器使用该值来构建内部的类搜索路径
二. 应用程序相关属性
1. Main-Class
定义jar文件的入口类,该类必须是一个可执行的类,一旦定义了该属性即可通过 java -jar x.jar来运行该jar文件。
三. 小程序(Applet)相关属性
1. Extendsion-List
该属性指定了小程序需要的扩展信息列表,列表中的每个名字对应以下的属性
2. <extension>-Extension-Name
3. <extension>-Specification-Version
4. <extension>-Implementation-Version
5. <extension>-Implementation-Vendor-Id
5. <extension>-Implementation-URL
四. 扩展标识属性
1. Extension-Name
该属性定义了jar文件的标识,例如Extension-Name: Struts Framework
了解 pluginManagement是什么?
pluginManagement它只是一种在所有项目模块中共享相同插件配置的方法.
来自Maven文档:
pluginManagement:是一个沿侧插件看到的元素.插件管理以大致相同的方式包含插件元素,除了不是为这个特定的项目构建配置插件信息,它旨在配置从这个继承的项目构建.但是,这仅配置在子节点的plugins元素中实际引用的插件.子类有权重写pluginManagement定义.
plugins和pluginManagement的区别概述(参考网址:https://blog.csdn.net/qiumengchen12/article/details/71688155)
plugins 和 pluginManagement 的区别,和我们前面研究过的 dependencies 和 dependencyManagement 的区别是非常类似的。plugins 下的 plugin 是真实使用的,而 pluginManagement 下的 plugins 下的 plugin 则仅仅是一种声明,子项目中可以对 pluginManagement 下的 plugin 进行信息的选择、继承、覆盖等。
所以pluginManagement是什么?翻译过来是插件管理,是plugins的父类。它只管理,使用当前的插件,并不导入插件,而外部的命令也无法访问pluginManagement管理下的jar包,所以使用maven命令运行jar包时,会报错(maven_java-1.0-SNAPSHOT.jar中没有主清单属性)。在jar包下的MANIFEST.MF 文件也没有显示main -Class,证明使用pluginManagement无法导入jar包。
运行整个单元测试(TestApp和TestApp1):
运行AppTest,命令:mvn test -D test=ClassName
这里出现了两个错误

需要在POM.xml的<dependencies>部分和 build部分分别加上:
<dependencies>
build
运行特定的测试类AppTest1,命令mvn test -D test=AppTest1,这里我故意改错了结果
运行测试类中指定的方法AppTest#public void testPrintHelloWorld2,命令mvn test -D test=AppTest#public void testPrintHelloWorld2
这里犯了一个错误,把<skipTests>设置成了true</skipTests>,所以半天没看到结果。
知道了Assert.assertEquals作用是判断两个参数是否相等,不相等就抛出异常。
使用maven跑main方法,mvn exec:java -Dexec.mainClass="com.jnshu.App"(参考网址:https://blog.csdn.net/qbg19881206/article/details/19850857)
部署数据库到远程DB,从本地直接连远程。在这里绕了半天,硬是没找思路。搜了也不清楚,还以为是直接用Navicat直接连阿里云数据库,但想着阿里云都没装MySQL怎么连?最后理清了思路,先安装服务器,然后在来连接MySQL(也就是部署数据库到远程DB(Database数据库))
明天计划的事情:
直接用Maven命令跑单元测试
直接执行Main方法,去在服务器上跑通流程
遇到的问题:
碰到问题把报错的结果放在网上搜索,但是有时候搜索的结果无法解决目前的问题。或者自己看不懂,然后就烦躁。这时候觉得应该快速了解各种名词(比如jar包,pluginManagement是什么),快速学习一些基础概念,然后再来解决问题。这样比无头苍蝇乱撞好很多。
收获:
1.今天看了几个师兄日报,觉得自己在JDBC花了太多时间,心态不行,纠结了好久。看着师兄也是坑坑洼洼的走过去的,自己直接躺平了。加油,把失去的时间追赶回来。
2.在解决一个问题的时候,如果我们不知道该如何分析,说明我们对这一块的知识是缺乏的,需要快速的系统性的学习然后问题就会迎刃而解。(在博客看到的,很不错)
3.学会查看官方文档,利用ctrl+F快速定位。
评论