Итак, я давно хотел использовать Lombok — и наконец-то начинаю проект, в котором смогу его использовать. Важно отметить, что это будет большое приложение корпоративного уровня, поэтому используемые шаблоны интеграции должны быть осмысленными, с минимальным количеством взломов.
Итак, я взглянул на lombok-maven-plugin и на всю эту delombok
выдумку. Я понимаю, что это будет дублировать весь мой код и расширять аннотации ломбока, где они есть. Это дает мне второй набор сгенерированных .java
файлов, которые maven должен использовать во время компиляции.
Однако, создавая эти новые исходные файлы, eclipse подхватывает их и пытается вставить в мой проект. Таким образом, он выдает миллион (хорошо, небольшое преувеличение) ошибок о повторяющихся классах.
Некоторые решения предлагают изменить <sourceDirectory>
в моем POM. Это не делает ситуацию лучше, так как mvn eclipse:eclipse
теперь будет полностью исключать мой каталог src/main/java
java из проекта, показывая мне только вывод процесса delombok.
Потом приходят предложения, что мне нужно использовать один профиль для компиляции/упаковки проекта, а другой для mvn eclipse:eclipse
. Это неприемлемое решение, так как мне приходится тратить достаточно времени на поддержание/объяснение моей и без того сложной настройки maven — без необходимости вводить совершенно новый профиль (в дополнение к моим существующим профилям).
Я надеюсь на какое-то вдохновение, которое спасет меня от списания Ломбока для моего проекта. Это отличный инструмент для сокращения шаблонного кода, но он просто не готов для корпоративного использования в прайм-тайм, что меня очень разочаровывает :-(
Ниже приведен мой текущий POM:
<build>
<sourceDirectory>target/generated-sources/delombok</sourceDirectory>
<testSourceDirectory>target/generated-test-sources/delombok</testSourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-maven-plugin</artifactId>
<version>1.12.2.0</version>
<dependencies>
<dependency>
<groupId>sun.jdk</groupId>
<artifactId>tools</artifactId>
<version>1.7</version>
<scope>system</scope>
<systemPath>${java.home}/../lib/tools.jar</systemPath>
</dependency>
</dependencies>
<executions>
<execution>
<id>delombok</id>
<phase>generate-sources</phase>
<goals>
<goal>delombok</goal>
</goals>
<configuration>
<encoding>UTF-8</encoding>
<addOutputDirectory>false</addOutputDirectory>
<sourceDirectory>src/main/java</sourceDirectory>
</configuration>
</execution>
<execution>
<id>test-delombok</id>
<phase>generate-test-sources</phase>
<goals>
<goal>testDelombok</goal>
</goals>
<configuration>
<encoding>UTF-8</encoding>
<addOutputDirectory>false</addOutputDirectory>
<sourceDirectory>src/test/java</sourceDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
Который в настоящее время только помещает код деламбокинга в мой проект eclipse.
Последнее замечание. Я также очень разочарован тем, что мне приходится вручную устанавливать lombok на все экземпляры eclipse, которые мы собираемся использовать. В основном потому, что я получаю телефонные звонки от всех разработчиков, которые не могут заставить его работать. Я понимаю, почему это не так просто, как mvn eclipse:eclipse
, но все же хотел отметить свое разочарование. Если бы нам пришлось вручную настраивать каждую библиотеку для использования на машине каждого разработчика, мы бы вернулись во времена, когда еще не было Maven.