Плагин JAXB maven не генерирует классы
Я пытаюсь создать java-файлы из XSD, но приведенный ниже код не генерирует. Если я раскомментирую outputDirectory, он работает, но Сначала удалите папку. добавление clearOutputDir = false
также ничего не генерирует.
<build>
<plugins>
<!-- JAXB xjc plugin that invokes the xjc compiler to compile XML schema into Java classes.-->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>xjc</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- The package in which the source files will be generated. -->
<packageName>uk.co.infogen.camel.message</packageName>
<!-- The schema directory or xsd files. -->
<sources>
<source>${basedir}/src/main/resources/xsd</source>
</sources>
<!-- The working directory to create the generated java source files. -->
<!--<outputDirectory>${basedir}/src/main/java</outputDirectory>
<clearOutputDir>false</clearOutputDir>-->
</configuration>
</plugin>
</plugins>
</build>
Я получаю сообщение:
[INFO] --- jaxb2-maven-plugin:2.2:xjc (default) @ service-business ---
[INFO] Ignored given or default xjbSources [/Users/aaa/development/workspace/infogen/infogen_example/service-business/src/main/xjb], since it is not an existent file or directory.
[INFO] No changes detected in schema or binding files - skipping JAXB generation.
1 ответов
первое, что вы должны никогда, генерировать код внутри src/main/java
. Сгенерированный код не должен контролироваться версиями и может быть удален в любое время, так как он будет восстановлен в любом случае.
сгенерированный код всегда должен находиться под target
, каталог сборки Maven. The jaxb2-maven-plugin
будет генерировать классы по умолчанию под target/generated-sources/jaxb
и на самом деле нет причин менять это. Если вы используете Eclipse, вы просто нужно добавить эту папку в путь сборки, щелкнув ее правой кнопкой мыши и выбрав "путь сборки > использовать исходную папку".
при запуске Maven, вы будете запускать его с mvn clean install
: Он очистит target
папка и восстановить все с нуля: это приводит к безопасной и ремонтопригодной строить. Вы обнаружите, что это решит вашу проблему: поскольку сгенерированные классы удаляются до сборки, они будут правильно сгенерированы во время следующей сборки.
конечно, если этот процесс поколения и вы не хотите делать это каждый раз, вы можете запустить Maven с просто mvn install
и настройте плагин, чтобы не удалять ранее созданные классы, установив clearOutputDir
to false
. Но обратите внимание, что, хотя сборка будет немного быстрее, вы можете не обнаружить последующие ошибки в XSD, если они будут обновлены.