У меня есть приложение JavaEE, maven. В этом приложении я использую классы, созданные из XSD, и mappers через Mapstruct.Maven жизненный цикл понимание
В моем EJB модуль, то Maven сборки необходимо выполнить следующие действия:
- генерировать классы Java из XSD по jaxb2-Maven-плагин
- добавить эти сгенерированные классы в папку источников по строить-хелпер-Maven-плагин, потому что:
- Maven-процессор плагин генерирует Mapstruct сопоставителя IM plementions по порождающих-mapstruct-картографов, которые используют эти XSD генерироваться классы
- , наконец, добавить эти реализации картографа на источники папки также
К сожалению, это не работает для меня. Это плагин часть pom.xml EJB-в:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>${version.jaxb2-maven-plugin}</version>
<executions>
<execution>
<id>xjc</id>
<goals>
<goal>xjc</goal>
</goals>
</execution>
</executions>
<configuration>
<outputDirectory>${project.build.directory}/generated-sources</outputDirectory>
<packageName>com.my.project</packageName>
<catalog>src/main/resources/xsd/CustomCatalog.xml</catalog>
<xjbSources>
<xjbSource>${project.basedir}/src/main/resources/jaxb2/</xjbSource>
</xjbSources>
<sources>
<source>${project.basedir}/src/main/resources/xsd/applications/MyNewClass.xsd</source>
</sources>
<xsdPathWithinArtifact>my/source/xsds</xsdPathWithinArtifact>
</configuration>
</plugin>
<plugin>
<groupId>org.bsc.maven</groupId>
<artifactId>maven-processor-plugin</artifactId>
<configuration>
<defaultOutputDirectory>
${project.build.directory}/generated-sources
</defaultOutputDirectory>
</configuration>
<executions>
<execution>
<id>generate-mapstruct-mappers</id>
<phase>compile</phase>
<goals>
<goal>process</goal>
</goals>
<configuration>
<processors>
<processor>org.mapstruct.ap.MappingProcessor</processor>
</processors>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${version.mapstruct}</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>${version.mapstruct}</version>
</dependency>
</dependencies>
</plugin>
<!-- attach sources -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>add-source</id>
<phase>compile</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>${project.build.directory}/generated-sources</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
Это создает классы из JAXB, и поместить в источники в файл JAR. Но сгенерированные реализации Mapper не находятся в источниках.
В eclipse я могу установить сгенерированные классы как часть пути сборки, но сгенерированный JAR не содержит реализации mapperimplementations.
Если я изменяю фазу плагинов, maven-процессор-плагин будет бросать не может найти simbol ERROR, а символ - сгенерированный класс из jaxb.
Спасибо, что помогли мне.
Попробуйте добавить декларацию 'build-helper-maven-plugin' _before_' maven-processor-plugin'. – Tunaki
То же самое: реализации картпера не будут в источниках – victorio
Какую версию 'maven-processor-plugin' вы используете?? Можете ли вы также указать версии других плагинов, которые используются? Можете ли вы сделать пример такого рода на github? – khmarbaise