How will this help if I delete an old file, one that simply hasnt been
changed? Also, won't the list just grow infinitely ?

re executions; search for "a tribute to Linus Torvalds" in the
surefire source to find a really neat workaround that solves several
of your other problems..

Kristian

Den 6. sep. 2012 kl. 20:53 skrev Mark Struberg <strub...@yahoo.de>:

>
>
> 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

Reply via email to