转载

继续折腾 maven 编译提速

之前折腾过一次 https://zrj.me/archives/1886 但是效果并不理想

我想要的效果是:通过一些配置的方式,来控制 maven 只编译指定的文件,不编译多余的文件,(哪怕那些文件在那里)

搜到这里有一个答案, https://stackoverflow.com/ques… 点赞很高,看起来有用,但是实际测试了一下,感觉并没有生效,还是编译了很多文件,并且报错找不到定义

然后看到这里 https://stackoverflow.com/ques… 加了一个 assembly.xml

但是报错 Failed to create assembly: Error creating assembly archive bin: You must set at least one file.

看到这里 https://3gods.com/ops/Maven-As…

加了一个

<dependencySets>
  <dependencySet>
    <useProjectArtifact>true</useProjectArtifact>
    <outputDirectory>lib</outputDirectory>
    <scope>runtime</scope>
  </dependencySet>
</dependencySets>

这下能打成了,而且确实小了很多,那试试加上一个指定的文件呢

打包是能打,但是跑起来报错 java.lang.NoClassDefFoundError: scala/collection/immutable/Map

查了下 https://stackoverflow.com/ques… 这里说要在 classpath 中加上 scala library 的 jar 包,加上去,换了一个错误报,报错找不到或无法加载主类

不过回头一想,试了一下以前打的一个旧的包,发现也不行,看来不是这次引入的问题,而是 java 的包本身执行 scala 就会有问题

把这么打出来的 jar 包丢到集群上,居然能跑,哇哈哈哈哈哈

上面这个属于瞎猫撞上死耗子,那么接下来,会有这么几个问题:

【1】scala-maven-plugin 中的配置和 maven-assembly-plugin 中的配置分别是如何起作用的,以及是如何互相协作生效的

【2】对于一个复杂的文件来说,如何找出他的依赖树,这个可以看到这里 https://stackoverflow.com/ques…

【3】还有一些第三方的 jar 包被打进去了,怎么从中找出那些并没有被任何文件依赖的包,然后把他们剔除掉呢,这个貌似也有方案 https://stackoverflow.com/ques…

不得不感慨 java 社区真是成熟啊

原文  https://zrj.me/archives/1931
正文到此结束
Loading...