У меня есть проект на основе Maven, в котором я пытаюсь добавить некоторые классы JAXB, автоматически создаваемые плагином Maven для jaxb2-maven-plugin. Тем не менее, мой первый разрез меня в цикле циклических зависимостей:
- Поскольку эти классы JAXB еще не созданы, мои другие источники, которые ссылаются на них, имеют ошибки компиляции.
- Поскольку эти другие источники имеют ошибки компиляции, эти классы JAXB не генерируются.
Кажется, есть две очевидные возможности для решения этого вопроса:
- Комментируйте неработающие ссылки, чтобы проект строился, и классы JAXB автоматически генерируются. Затем скопируйте те сгенерированные источники из
/target
в/src/main/java
, чтобы ссылки на них не вызывали ошибок компиляции. - Создайте полностью отдельный проект, состоящий из ничего, кроме материала JAXB. Включите его в качестве зависимости в моем основном проекте.
Я что-то упустил? Вариант №1 кажется нелепым, что просто не может быть тем, как люди используют JAXB. Вариант № 2 кажется более рациональным, но все же довольно неэффективным и громоздким. Мне действительно нужно взять верх над полностью отдельным проектом, чтобы использовать JAXB?
Есть ли еще более элегантные подходы, которые разработчики используют для ссылки на классы, созданные JAXB, в том же проекте, в котором их генерирует плагин Maven?
ОБНОВЛЕНИЕ: По запросу здесь находится соответствующая часть моего POM:
<build>
<plugins>
<plugin>
<!-- configure the compiler to compile to Java 1.6 -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>xjc</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- The name of your generated source package -->
<packageName>com.mypackage</packageName>
</configuration>
</plugin>
</plugins>
</build>
Когда я запускаю mvn clean package
, я вижу, что мои источники JAXB генерируются под подкаталогом /target
. Однако эти сгенерированные источники не добавляются автоматически к пути к классам для этапа компиляции.
ОБНОВЛЕНИЕ ПОСЛЕ РАЗРЕШЕНИЯ: Оказалось, что мои проблемы с компиляцией больше связаны с тем фактом, что я работал в Eclipse, а его интеграция с Maven имеет некоторые проблемы с "jaxb2-maven-plugin". См. qaru.site/info/479711/... для более подробной информации об этой проблеме и ее разрешении.