Tor*_*ten 17 maven maven-compiler-plugin
即使我只改变了我的一个课程,Maven总是重新编译所有课程.我使用这个插件配置:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<staleMillis>1</slateMillis>
<useIncrementalCompilation>true</useIncrementalCompilation>
</configuration>
</plugin>
</plugins>
Run Code Online (Sandbox Code Playgroud)
出现这种情况有mvn compile
,mvn package
和mvn install
.
当然,如果您有10-15个文件,这不是问题.但是,我有超过一千个源文件,需要花费很多时间.
Maven编译器插件是否有一些隐藏设置来重新编译修改后的文件?有没有解决方法?
wap*_*gui 27
https://issues.apache.org/jira/browse/MCOMPILER-209
使用保加利亚表示法(是< - >否)
<useIncrementalCompilation>false</useIncrementalCompilation>
意味着真实,反之亦然
Jen*_*ann 22
虽然您可以告诉Maven"仅重新编译已修改的文件",但这样做会导致错误的结果.默认行为不是错误,而是故意的设计决策.
useIncrementalCompilation
真的是什么有点说,这个主题的文档并不是最佳的.这是真的发生(基于什么AbstractCompilerMojo源从maven-compiler-plugin
3.3):
useIncrementalCompilation
设置为false
(不推荐)
useIncrementalCompilation
设为true
(默认)
Changes detected - recompiling the module!
总而言之,useIncrementalCompilation
应始终保留默认值true
.
可以理解的是,有人可能会问:为什么插件不能确定哪些类受更改影响,只重新编译那些类?在对MCOMPILER-205的评论中,Maven开发人员Robert Scholte给出了简要的理由,后来确认了以下详细说明:
如果更改或删除了任何源文件,则会删除并重新编译所有文件.这样做的原因是简单地使用默认的java编译器重新编译所有内容非常快,可能比替代方法快得多,这看起来类似于:
- 检测所有已更改的文件
- 分析所有源文件以映射类之间的所有关系
- 计算所有受影响的文件
- 重新编译受影响的文件
但是,正如Robert 所写的那样,如果项目使用Eclipse编译器进行此分析,则可能不需要重新编译所有内容.但对于今天的Maven用户来说,这是一个有争议的问题,因为maven-compiler-plugin
它还没有根据编译器的选择改变其行为.
归档时间: |
|
查看次数: |
13958 次 |
最近记录: |