之前折腾过一次 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 社区真是成熟啊