Ben, > So to Colin (I think)
I'm not Colin, but I will try to explain the situation I'm in. > Why do you have multiple source trees? > What is in them? 1) src/java: production source code 2) src/junit: unit test code: component white box tests 3) src/integration: integration unit test code: component black box tests 3) src/mocks: mock objects 4) src/functional: test code used by our own functional test system > Do they build distinct artifacts? Yes! src/java is the input to my production jar, while src/mocks is the input to a jar containing the mocks that can be used by the unit tests of this component and by the integration unit tests of higher level components as the stub for this component. I could however split the interfaces from the production implementation as two Maven projects and add a third for the mocks. Do I want to do this? NO, since these interfaces, implemenation and test code is what makes up my component! I still have one production deliverable, but I also want to deliver a test artifact that can be used as a stub for this component by other components. When the production code changes, the tests as well as the mocks have to be kept in sync by the developer who changes something. If I had to split all the code, people would definitely forget about some of these parts. I agree with Jason van Zyl to have only one source folder to define the *production* code! But I would like to rephrase it as "The java plugin will only accept 1 input source folder, always!". If you don't change the statement, it's confusing for people since they see references to unit & integration unit tests in the POM. Do these references belong there? In my opinion, they do. I think of the POM as the container keeping all the configuration details for plugins of Maven I use to process my project. I would like to state that it's up to the plugin writer to define what it needs as input and what as output. Look at the following example: java plugin: - input: sourceDirectory - output: hardcoded to targets\classes? aspectj plugin: - input: aspectSourceDirectory - input: srcDirectory (re-use the tag of the java plugin here?) - output: generated sources with aspects woven into it. (re-use the sourceDirectory value of the Java-plugin here?) It's been a while since I used AspectJ, but if I remember well, you write your source code, you write your aspects and then weave all together. Doesn't this mean that that the AspectJ plugin needs two inputs? I need two source folders, no? If you standardize this, then the documentation for each plugin would not only list the goals and properties, but also a description of what you should write in the POM to configure the plugin. The documentation of the aspectj:compile goal is a good example of this: it defines an additional source folder within the build tag! Maven has been very valuable so far, but this source folder thing must be resolved before a 1.0 release in my opinion. It's not a black or white thing, we have to cover the gray area and cover it consistently! Ringo --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]