On 3 July 2012 15:55, Dmitry Trunikov <dmitry.truni...@zoral.com.ua> wrote:
> Hi All, > > It seems that my question has an obvious answer. Unfortunately googling > didn't give me a good one. > > Prerequisites: > > I have a classical multi-module project. The root POM declares two > modules: 'api' and 'impl'. > These modules have references to the parent. > The module 'api' contains definition of an interface. > The module 'impl' has dependency on 'api' and a class which implements the > interface. > > Issue: > > In the top directory I run a reactor build: > > [First build] > $ mvn clean compile > > The build finished with success. > Then I made changes in the interface declaration in the module 'api' > (added a new method) and run build again: > > [Second build] > $ mvn compile > > javac will only recompile classes that have changed. it does not do dependency analysis, so a breaking change will only cause a compile failure until you do clean > The build finished with success again. It is strange because I expected > that build finished with failure because class in the module 'impl' had no > implementation of the method just added to the interface. > When I run build with command: > > [Third build] > $ mvn clean compile > > It finished, as I expected, with failure. > > Question: > > Why Maven didn't complain on second build? > > > Thanks for your help, > > Dmitry >