В наших интеграционных тестах jOOQ мы используем плагин генерации кода jOOQ для генерации классов в каталог src/test/java
. Мы делаем это потому, что:
- Мы хотим проверять сгенерированные источники, чтобы мы могли легче обнаруживать регрессии в генераторе кода
- Сгенерированные классы используются тестами
Итак, (упрощенная) конфигурация плагина выглядит следующим образом:
<plugin>
<groupId>org.jooq</groupId>
<artifactId>jooq-codegen-maven</artifactId>
<executions>
<execution>
<id>some-id</id>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<generator>
<target>
<directory>src/test/java</directory>
</target>
</generator>
</configuration>
</execution>
</executions>
</plugin>
К сожалению, это, кажется, заставляет Maven полагать, что сгенерированные таким образом классы должны быть скомпилированы также во время фаза compile
, как видно из следующего лога:
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ ... ---
[INFO] Compiling 25 source files to C:\...\target\classes
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ ... ---
[INFO] Compiling 25 source files to C:\...\target\test-classes
... который вообще не имеет смысла. Отладочные выходные подсказки для обоих src/main/java
и src/test/java
включаются как compileSourceRoots
:
[DEBUG] Configuring mojo 'org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile' with basic configurator -->
[DEBUG] (f) compileSourceRoots = [C:\...\src\main\java, C:\...\src\test\java]
Для записи, во время фазы testCompile
, как и ожидалось, только src/test/java
помещается на compileSourceRoots
путь:
[DEBUG] Configuring mojo 'org.apache.maven.plugins:maven-compiler-plugin:3.8.1:testCompile' with basic configurator -->
[DEBUG] (f) compileSourceRoots = [C:\...\src\test\java]
Для записи мы используем Maven 3.6.2
Как я могу предотвратить добавление каталога src/test/java
в переменную compileSourceRoots