This is an automated email from the ASF dual-hosted git repository. desruisseaux pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/maven-compiler-plugin.git
commit f3c1f26b94da2df5743bb20b5cb876abfb917e8d Author: Martin Desruisseaux <[email protected]> AuthorDate: Sat Jul 19 13:55:31 2025 +0200 Add documentation about how the tests were ported from Maven Compiler Plugin 3 to 4. --- src/it/CHANGES_v3_to_v4.md | 74 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/src/it/CHANGES_v3_to_v4.md b/src/it/CHANGES_v3_to_v4.md new file mode 100644 index 0000000..ccb2295 --- /dev/null +++ b/src/it/CHANGES_v3_to_v4.md @@ -0,0 +1,74 @@ +<!--- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +# Changes in integration tests since Maven 3 +This section describes noticeable changes in the tests of Maven Compiler Plugin 4 +compared to the tests of Maven Compiler Plugin 3. +The purpose of this section is to help the port of new tests added to the Maven Compiler Plugin 3 +by documenting which tests to ignore and what to modify in new tests. + +## Changes in POM parameters +Moved or added the following configuration parameters in the `pom.xml` files of some tests: + +* The `<outputDirectory>` and `<testOutputDirectory>` parameters declared under `<configuration>` + moved to `<build>`, because those properties are read-only in the configuration. +* Many `<source>` and `<target>` parameters have been either removed or replaced by `<release>`. +* For some tests using a non-modular JAR in a modular project, + `<type>modular-jar</type>` has been added in the dependency declaration. + +## Changes to met new plugin assumptions +The plugin incremental compilation algorithm depends on the convention that +Java source files are located in directories of the same name as their package names, +with the `.` separator replaced by path separator (`/` or `\`). +This is a very common convention, but not strictly required by the Java compiler. +For example, if the `src/main/java/MyCode.java` file contains the `package foo` statement, +the compiled class will be located in `target/classes/foo/MyCode.class` — note the `foo` additional directory. +In such case, the incremental build algorithm will not track correctly the changes. +The following tests have been made compliant with the convention for allowing the algorithm to work: + +* `mcompiler-182` in integration tests. + +Note that due to [MCOMPILER-209](https://jira.codehaus.org/browse/MCOMPILER-209), +the old algorithm was compiling everything without really detecting change. +So this issue is maybe not really a regression. +To reproduce the old behavior, users can just disable the incremental compilation. + +## Removed integration tests +The tests in the following directories were already disabled and have been removed: + +* `MCOMPILER-197` because it ran only on Java 8 while the build now requires Java 17. +* `groovy-project-with-new-plexus-compiler` because it ran only on Java 8 and the plexus compiler has been removed. + +The tests in the following directores are not supported anymore and have been removed: + +* `release-without-profile` because the plugin no longer try to chose automatically + which parameters to use between `--source` and `--release`. This is justified by + the fact that the plugin cannot run on Java 8. +* `release-without-profile-fork` for the same reason as above. +* `MCOMPILER-190`, which has been replaced by `MCOMPILER-609`. + They are compilation tests using the Eclipse compiler, but the former test depended on Nexus. + It has been replaced by a test that depends on `javax.tools`. + + +## Removed JUnit tests +Removed the following directories and associated test methods: + +* `compiler-one-output-file-test2` because it was redundant with `compiler-one-output-file-test`. + +The only difference was the addition of include/exclude filters, but that difference had +no effect because the compiler mock used in this test was ignoring all sources anyway. +This test has been replaced by `compiler-modular-project`.
