I guess you missed me. I will not hand-pick which tests to run but run ALL tests of a module if a SINGLE file got changed on the input classpath/dependencies.
It's all or nothing to be on the safe side. LieGrue, strub ----- Original Message ----- > From: Romain Manni-Bucau <rmannibu...@gmail.com> > To: Mark Struberg <strub...@yahoo.de>; Maven Developers List > <dev@maven.apache.org> > Cc: > Sent: Friday, September 7, 2012 8:48 AM > Subject: Re: [incremental build] Detect leftovers from a previous build > > How? If i change a class in main/java but the test is done by reflection > youll miss it > Le 7 sept. 2012 08:46, "Mark Struberg" <strub...@yahoo.de> a > écrit : > >> >> >> Romain, we can perfectly do that! >> >> We just need to check whether anything on the input classpath got changed >> (jars, classes, etc). >> >> Of course there are cases where you like to manually re-run tests over >> again. For those cases we would need to introduce a 'force' flag > somehow. >> >> LieGrue, >> strub >> >> >> >________________________________ >> > From: Romain Manni-Bucau <rmannibu...@gmail.com> >> >To: Mark Struberg <strub...@yahoo.de>; Maven Developers List < >> dev@maven.apache.org> >> >Sent: Friday, September 7, 2012 8:41 AM >> >Subject: Re: [incremental build] Detect leftovers from a previous build >> > >> > >> >You cant do it dor surefire. Tests are sometimes done by reflection and >> you cant ask a dep tree by test.in real world. >> >Le 7 sept. 2012 08:37, "Mark Struberg" > <strub...@yahoo.de> a écrit : >> > >> >> I may be missing something, but if all plugins implement this > logic, >> >>> how it will be different from implicitly doing > "clean" during each >> >>> build? >> >> >> >>There is actually a huge difference >> >> >> >>a.) yes, there are quite a few of such plugins which do not need > this. >> Think about sql-maven-plugin, openjpa-maven-plugin, etc >> >> >> >>b.) A plugin will only delete all it's output from a previous > invocation >> AFTER it detects that it really needs to do something! If there is e.g. no >> .java file which is newer than it's corresponding .class and no .java > file >> got added or removed, then the whole compilation doesn't get triggered. > Of >> course it's currently (without such a helper) hard to detect if a file > got >> removed from src/... >> >> >> >>A very simple hack would be to create a DirectoryScanner and store > / >> later compare the md5 of all ./src files and trigger the clean lifecycle if >> that got changed. That seems to be the stuff the incremental-build-plugin >> does. >> >>That would be better than nothing, but not sure if it would be >> sufficient. I'd at least try to get rid of unnecessary surefire > executions. >> >> >> >>LieGrue, >> >>strub >> >> >> >> >> >> >> >> >> >>----- Original Message ----- >> >>> From: Igor Fedorenko <i...@ifedorenko.com> >> >>> To: dev@maven.apache.org >> >>> Cc: >> >>> Sent: Friday, September 7, 2012 4:14 AM >> >>> Subject: Re: [incremental build] Detect leftovers from a > previous build >> >>> >> >>> I may be missing something, but if all plugins implement this > logic, >> >>> how it will be different from implicitly doing > "clean" during each >> >>> build? Or, put differently, are there plugins that do not need > to clean >> >>> their previous output to be absolutely sure they properly > handle >> >>> incremental rebuilds? >> >>> >> >>> -- >> >>> Regards, >> >>> Igor >> >>> >> >>> On 12-09-06 2:52 PM, Mark Struberg wrote: >> >>>> >> >>>> >> >>>> Hi! >> >>>> >> >>>> I had some idea for detecting stale changes in maven > which is pretty >> >>> generic >> >>>> >> >>>> >> >>>> The problem hits us if you compile BeanA and BeanA2 in a > project >> where >> >>> BeanA2 is using BeanA. >> >>>> On a >> >>>> >> >>>> $> mvn clean compile >> >>>> >> >>>> you will get both BeanA.class and BeanA2.class in > target/classes >> >>>> Now delete BeanA.java >> >>>> Currently (2.6-SNAPSHOT) the maven-compiler-plugin only > compiles all >> >>> sources without doing any cleanup and thus BeanA.class will > still >> remain in >> >>> target/classes. >> >>>> >> >>>> >> >>>> That is clearly a bug as BeanA2 will be left broken, > packaged into a >> broken >> >>> jar, ... >> >>>> >> >>>> >> >>>> >> >>>> How can we avoid that? >> >>>> >> >>>> Simple answer: A plugin which doesnt support those cases > by the >> underlying >> >>> took (javac) must always first clean up the stuff it generated > during >> the last >> >>> invocation. >> >>>> >> >>>> How can we do that? >> >>>> >> >>>> step 1: Start a DirectoryScanner and get all files in > target/classes. >> >>> Remember this list! >> >>>> >> >>>> >> >>>> step 2: Run the compiler >> >>>> >> >>>> >> >>>> step 3: List all files in target/classes again and remove > all files >> you >> >>> found in step 1. You will end up with a list of all files > generated by >> the >> >>> compilation as result. >> >>>> >> >>>> step 4: Store this list into >> >>> > target/maven-status/maven-compiler-plugin/default/createdfiles.lst >> >>> ('default' is the plugin execution. We need this in > case we have >> >>> multiple <executions>). >> >>>> >> >>>> >> >>>> On the next compile you just need to check if you have > such a >> >>> createdfiles.lst file and then first remove all the files > listed in it >> as step >> >>> 0. >> >>>> Then you can continue with step 1 from scratch. >> >>>> >> >>>> We could easily create a utility class for it which keeps > the state >> with >> >>> methods >> >>>> >> >>>> public class ChangeDetector /* TODO find better name */ >> >>>> { >> >>>> File[] readPreviouslyDetectedFileList(File targetFile); >> >>>> void recordFiles(File baseDir) >> >>>> File[] detectNewFiles(); >> >>>> storeDetectedFileList(File targetFile) >> >>>> } >> >>>> >> >>>> This can e.g. also be used by the maven-resources-plugin > to get rid >> of >> >>> copied resources which got deleted from src/main/resources. >> >>>> >> >>>> Do you have a better idea? Any ideas for improving this? >> >>>> And a big question: how can I get hold of the current > <execution> id >> >>> in a plugin? >> >>>> >> >>>> >> >>>> LieGrue, >> >>>> strub >> >>>> >> >>>> > --------------------------------------------------------------------- >> >>>> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org >> >>>> For additional commands, e-mail: > dev-h...@maven.apache.org >> >>>> >> >>> >> >>> > --------------------------------------------------------------------- >> >>> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org >> >>> For additional commands, e-mail: dev-h...@maven.apache.org >> >>> >> >> >> >>> --------------------------------------------------------------------- >> >>To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org >> >>For additional commands, e-mail: dev-h...@maven.apache.org >> >> >> >> >> > >> > >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org >> For additional commands, e-mail: dev-h...@maven.apache.org >> >> > --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org For additional commands, e-mail: dev-h...@maven.apache.org