Неизменяемые не генерируют код с Java 9 с модулями

Использование библиотеки immutables прекрасно работает с Java 9, пока я не добавлю module-info.java к проекту, Immutables*.java больше не будет генерироваться.

К информации о модуле я добавляю "требуется значение", как предлагает IntelliJ.

Что мне не хватает, это immutables-library вопрос или что-то еще мне нужно настроить для того, чтобы javac найти аннотацию обработки.

Я использую Maven с maven-compiler-plugin:3.7.0настроен для цели / источника = 9.

1 ответ

Решение

Проблема в том, что вы не сконфигурировали Неизменяемую деталь как процессор аннотаций, что должно быть сделано так:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>example</groupId>
    <artifactId>jigsaw</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.immutables</groupId>
            <artifactId>value</artifactId>
            <version>2.5.6</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <build>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.7.0</version>
          <configuration>
            <source>9</source>
            <target>9</target>
            <annotationProcessorPaths>
              <dependency>
                  <groupId>org.immutables</groupId>
                  <artifactId>value</artifactId>
                  <version>2.5.6</version>
              </dependency>
            </annotationProcessorPaths>
          </configuration>
        </plugin>
      </plugins>
    </build>
</project>

Помимо подсказок о кодировании, которые просто можно исправить, определив кодировку следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>example</groupId>
    <artifactId>jigsaw</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.immutables</groupId>
            <artifactId>value</artifactId>
            <version>2.5.6</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <build>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.7.0</version>
          <configuration>
            <source>9</source>
            <target>9</target>
            <annotationProcessorPaths>
              <dependency>
                  <groupId>org.immutables</groupId>
                  <artifactId>value</artifactId>
                  <version>2.5.6</version>
              </dependency>
            </annotationProcessorPaths>
          </configuration>
        </plugin>
      </plugins>
    </build>
</project>

Если вы соберете через вышеупомянутую конфигурацию, вы получите все, что вам нужно:

.
├── pom.xml
├── src
│   └── main
│       └── java
│           ├── example
│           │   └── Some.java
│           └── module-info.java
└── target
    ├── classes
    │   ├── example
    │   │   ├── ImmutableSome$1.class
    │   │   ├── ImmutableSome$Builder.class
    │   │   ├── ImmutableSome.class
    │   │   └── Some.class
    │   └── module-info.class
    ├── generated-sources
    │   └── annotations
    │       └── example
    │           └── ImmutableSome.java
    ├── jigsaw-1.0-SNAPSHOT.jar
    ├── maven-archiver
    │   └── pom.properties
    └── maven-status
        └── maven-compiler-plugin
            └── compile
                └── default-compile
                    ├── createdFiles.lst
                    └── inputFiles.lst
Другие вопросы по тегам