#maven-2 #jaxb2 #maven-jaxb2-plugin
#maven-2 #jaxb2 #maven-jaxb2-plugin
Вопрос:
В настоящее время у меня есть задача ant, которая отлично справляется с созданием объектов моего домена из файлов привязки xsd и xjb. Он создает аннотации и вводит код там, где мне это нужно, на основе пользовательского плагина.
Теперь я пытаюсь перенести все это в Maven, и хотя я могу генерировать объекты, я не могу получить код для ввода или добавления аннотаций. Моя запись плагина POM выглядит следующим образом:
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.8.0</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<bindingDirectory>src/main/resources/jaxb/bindings</bindingDirectory>
<generatePackage>com.noush.web.domain.model.data</generatePackage>
<extension>true</extension>
<verbose>true</verbose>
<args><!-- <arg>-XtoString</arg> -->
<!-- I want to use commons-lang-plugin to generate toString but this can
wait <arg>-Xcommons-lang</arg> <arg>-Xcommons-lang:ToStringStyle=SIMPLE_STYLE</arg> -->
<arg>-Xannotate</arg>
<arg>-Xinject-code</arg>
</args>
<plugins>
<plugin>
<groupId>noush</groupId>
<artifactId>code-expander-plugin</artifactId>
<version>1.0</version>
</plugin>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics-annotate</artifactId>
<version>0.6.0</version>
</plugin>
</plugins>
</configuration>
</plugin>
Объекты создаются, но без какого-либо введенного кода или аннотаций. Вывод не дает никаких указаний на то, что что-то не так.
Если это поможет, вот моя рабочая конфигурация ant:
<target name="defineXjcTask">
<taskdef name="xjc" classname="com.sun.tools.xjc.XJCTask" classpathref="xjcLib" />
</target>
<target name="generateJaxb">
<xjc target="${build.generated}" package="${noushweb.domain.model.jaxb.package}">
<arg value="-verbose"/>
<arg value="-extension"/>
<arg value="-Xcommons-lang"/>
<arg value="-Xcommons-lang:ToStringStyle=SIMPLE_STYLE"/>
<arg value="-Xinject-code"/>
<arg value="-Xannotate"/>
<schema dir="${build.directory}/jaxb/bindings" includes="${matmWS.mmmws.data.filename}" />
<binding dir="${build.directory}/jaxb/bindings" includes="${matmWS.mmmws.binding.filename}"/>
<produces dir="${build.generated}/${noushweb.domain.model.jaxb.package.dir}" includes="**/*.java" />
</xjc>
</target>
<path id="xjcLib">
<pathelement location="${lib.dir}/jaxb-ri-2.0.5/lib/jaxb-xjc.jar" />
<pathelement location="${ib.dir}/jaxb-ri-2.0.5/lib/jaxb-api.jar" />
<pathelement location="${lib.dir}/jaxb-ri-2.0.5/lib/jaxb-impl.jar" />
<pathelement location="${lib.dir}/jaxb-ri-2.0.5/lib/activation.jar" />
<pathelement location="${lib.dir}/jaxb-ri-2.0.5/lib/jsr173_1.0_api.jar" />
<pathelement location="../lib/stax-api-1.0-2.jar" />
<pathelement location="../lib/jaxb-commons-lang-plugin-2.2.jar" />
<pathelement location="${lib.dir}/commons-lang-2.4/lib/commons-lang-2.4.jar" />
<pathelement location="../lib/code-expander-plugin.jar" />
<pathelement location="../lib/jaxb2-basics-runtime-0.6.0.jar" />
<pathelement location="../lib/jaxb2-basics-tools-0.6.0.jar" />
<pathelement location="../lib/jaxb2-basics-annotate-0.6.0.jar" />
<pathelement location="../lib/annox-0.5.0.jar" />
<pathelement location="${lib.dir}/axis-1_4/lib/commons-logging-1.0.4.jar" />
<pathelement location="${lib.dir}/hibernate-validator-4.1.0.Final/hibernate-validator-4.1.0.Final.jar"/>
<pathelement location="${lib.dir}/hibernate-validator-4.1.0.Final/validation-api-1.0.0.GA.jar"/>
</path>
Думаю, я мог бы использовать настройку antrun, но я надеялся, что смогу заставить это работать.
Любые мысли будут приветствоваться.
Спасибо, нет
Комментарии:
1. Пожалуйста, запустите mvn -e -X и добавьте журнал в свой пост. Плагины работают с Maven, есть много проектов, использующих это. Вероятно, какая-то проблема с конфигурацией. Вы также можете указать проблему на java.net/jira/browse/MAVEN_JAXB2_PLUGIN публикация вашего проекта. Я рассмотрю подробнее.
2. Этот пример при просмотре кода может помочь: codereview.stackexchange.com/questions/1877 /…