sebb> It can mess up history, and why move over 1000 files if you don't need to?
It does NOT mess the history. Feel free to inspect my gradle branch: https://github.com/vlsi/jmeter/tree/gradle For instance, here's the history for NewDriver.java: https://github.com/vlsi/jmeter/blame/gradle/src/core/src/main/java/org/apache/jmeter/NewDriver.java Even though I moved the file, it shows the history just fine. Not a single line is attributed to me. sebb>Also it makes it easier to compare Gradle with Ant if there are fewer changes. The point of Git/Gradle migration is to make Apache JMeter development experience great again. Of course we can configure Gradle build files so it uses current folder layout, however it would run into various issues (including the ones where IDE does not support our build customization). Note: so far I just moved files around, and it is quite trivial to verify that no source was altered in the middle. The jar artifacts would still need to be inspected, so keeping old source layout does not really help to verify binaries. sebb>If you mean that the test files should be in the same directory as the sebb>files they are testing, then I am -1 on that. I mean that the layout should be like core/src/main/java/org/apache/jmeter/... <-- production java classes core/src/main/resources/org/apache/jmeter/... <-- resources for production (e.g. property files) core/src/test/java/org/apache/jmeter/... <-- test classes for core module core/src/test/resources/org/apache/jmeter/... <-- resources for test classes (e.g. property files, jmx files, etc) You can read more on that in the documentation: https://docs.gradle.org/current/userguide/java_plugin.html#sec:java_project_layout sebb> What are you trying to achieve by moving the files? I'm trying to move test classes closer to the relevant implementations. For instance, in my branch (e.g. https://github.com/vlsi/jmeter/tree/6674650bb1c35e93fdc4bb3caa57fdcf1acc8dea/src/protocol/jms/src ) you can find how test classes for JMS are located in jms/src/test/java, and implementation classes for jms are located in jms/src/main/java It provides several improvements: 1) The layout is standard, and developers know where they can find implementation and/or a test class. They know where the class should be added to. 2) Classpath for testing is sane. In other words, if a certain protocol uses a dependency jar, we don't really want that dependency to be used accidentally in implementation and/or in test classes for other protocol. 3) Tests for different modules can be compiled and run in parallel. Vladimir
