有一段时间没更blog了,之前一直都没时间写,害。。。
今天堂姐结婚,可惜学校只有四天的假期(就这?四天怎么够表达我对祖国母亲生日的激动之情啊🙄),刚好周一又没有课,于是我强行+1s续了一波假期硬是拖到今天才回学(cun)校(li)(内心写着一万个不愿意55555555 T_T)
顺便祝堂姐百年好合早生贵子吧哈哈哈哈哈哈😀
折腾Maven
回到学校之后,换了个衣服,吃了个午饭,就开始一头扎进Maven的文档里。配置和使用的过程也并不是那么一帆风顺,这里记录一下使用中遇到的一些问题(不知道以后会不会遇到另一些奇奇怪怪的问题,这里的问题是暂时碰到的,以后不定期更新遇到的问题解决方案)
老生常谈的Mirror问题
装上maven之后,我在终端里输入了
$ cd projects/
$ mvn archetype:generate
尝试通过最朴素的interactive模式来创建一个很naive的maven project,结果发现下载速度不太对劲儿,下一个4.7mb的包都下了好久,直觉告诉我应该是天朝自有国情在的问题拦住我了。
于是google了一下 看看能不能改掉镜像(PS:按照Maven里面的说法应该叫repository,平时下artifact的那个大仓库应该叫“中央仓库”central repository)
于是搜了一下maven的官方文档
又google了一下,发现国内一般用阿里云Maven仓库(url为https://maven.aliyun.com/repository/public)
于是愉快地打开终端 输入:
$ cd /home/user_name/.m2/
$ nano settings.xml #因为这个settings.xml一开始是不存在的,要自行创建
然后在nano里面输入
<settings>
<mirrors>
<mirror>
<id>aliyun-mirror</id>
<name>Aliyun Maven Repo</name>
<url>https://maven.aliyun.com/repository/public</url>
<mirrorOf>*</mirrorOf> #代表全部仓库都走阿里云maven仓库镜像
</mirror>
</mirrors>
</settings>
其中这里的mirrorOf默认是central,也就是说这个仓库是id为central的镜像站。如果要从id不是central的仓库中下载其他artifact则会跑到各自对应id的镜像站上下载(PS:一个mirrorOf最多对应一个id,如果出现一对多的情况则只取第一个match,其他的match则会被丢弃)
jar文件找不到main class的问题
今天写了个小hello world,结果发现编译出来的jar跑不了
$ maven archetype:generate
#......(omitted)
$ mvn package
$ java -jar target/noobapp-1.0.jar
no main manifest attribute, in target/noobapp-1.0.jar
看了一下文档,发现原来jar文件需要手动指定Main-Class入口点
于是找到了两种解决方法(假设我们的noobapp-1.0入口点包含在noobpkg这个包里面的App.java):
1. 在Windows下以压缩包形式打开.jar,修改MANIFEST FILE,将里面Main Class:后面的内容更改称noobpkg.App
2. 直接手动指定入口点java -cp target/noobapp-1.0.jar noobpkg.App