6

我在考虑 Maven 中的依赖关系。Maven 会下载它们,但不知道它们是为什么目标版本的 JVM 编译的,以及使用什么编译器。这提出了两个问题:

  • 依赖重新编译会带来更快的依赖库吗? 我试图搜索这个,但没有找到足够的答案。我发现对于 1.6 有拆分字节码验证,这是在使用目标 1.6 编译时完成的。
    还有一个问题是 Java 6 在 JDK、JVM 还是两者都有性能改进?其中提到较新版本的 javac 可能会生成更优化的代码。
  • Maven是否可以重新编译依赖库?是否可以将 Maven 配置为下载源,在其中放置有关 1.6 目标的信息并执行mvn clean install
    我知道Maven 依赖插件依赖:源目标。这可以用于源下载。
    还有Maven Replacer Plugin允许替换文件中的文本。如其第 58 期所述,已实现 XPath 支持。
    是否可以使用这些插件来实现它以实现依赖以及它的依赖来执行它?我不确定如何在依赖项上执行它 - 可能是使用 Maven Replacer Plugin 将配置注入解压缩的依赖项 pom.xml?或者是否有一种更简单的方法可以在用户的​​ settings.xml
    中 使用构建配置文件配置目标 java 版本,这将优先于项目设置,从而避免pom.xml修改?
4

2 回答 2

3

几乎没有优化,而且从最早的javac时候就已经存在。(甚至可以被认为是历史性的)如果你有 Java 1.0 构建的代码,你可能会发现一个改进,但过去十年的任何东西都可能像今天一样在字节码方面是最佳的。

大部分优化是在 JVM 本身中完成的,即使对于完全相同的代码,您也会发现 Java 6 update 30 比 Java 6 update 0 运行得更快。

于 2012-01-15T09:26:52.867 回答
1

让我们想一想 Maven 依赖项是什么。从最一般的意义上说,它是由其他人开发的软件,有自己的生命周期:

  • 被打包在一个档案中,
  • 存在于存储库中
  • 在版本描述符(组、工件、版本)下。

这就是 Maven 的全部保证。请注意,它甚至没有说它是 Java(例如,可能是资源或本机库)。不多。要求自动重新编译依赖项太少了。

于 2012-01-16T09:27:20.257 回答