Файл эпизода не создается

Я создаю проект, используя плагин maven-jaxb2.

<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>

Я установил параметр эпизода

<episode>true</episode>

Однако я вижу, что файл .episode не создается. Мне нужен этот файл, чтобы этот проект можно было использовать как эпизод в другом зависимом проекте.

В журналах сборки maven я вижу эти журналы, которые указывают, что параметр Episode & EpisodeFile, поддерживаемый xjc, не поддерживается плагином:

[WARNING] Unknown plugin option: -episode
[WARNING] Unknown plugin option: C:\projecdir\src\main\generated-sources\META-INF\sun-jaxb.episode

Это ошибка в плагине? Также есть ли какой-либо известный обходной путь для этого.

Обновление: что-то странное происходит, когда useDependenciesAsEpisodes не равно false

useDependenciesAsEpisodes = true

Когда это было правдой, это показывает предупреждение выше. Эта сборка работает, но файл эпизода не создается.

useDependenciesAsEpisodes = false

Когда я устанавливаю для этого параметра значение false, создается файл эпизода.

Однако у меня были дополнительные аргументы для плагина, которые ломали сборку.

<args>
    <arg>-typeId=7000</arg>
    ...
</args>

Ошибка:

Caused by: com.sun.tools.xjc.BadCommandLineException: unrecognized parameter -typeId=7000
    at com.sun.tools.xjc.Options.parseArguments(Options.java:817)
    at org.jvnet.mjiip.v_2.OptionsFactory.createOptions(OptionsFactory.java:91)
    ... 24 more

Я должен удалить дополнительные аргументы, чтобы это работало. Однако мне нужны эти аргументы для некоторых плагинов jaxb (как показано здесь), используемых вместе с maven-jaxb2-плагин

<configuration>
    <extension>true</extension>
    <args>
        <arg>-XtoString</arg>
        <arg>-Xequals</arg>
        <arg>-XhashCode</arg>
        <arg>-Xcopyable</arg>
    </args>
    <plugins>
        <plugin>
            <groupId>org.jvnet.jaxb2_commons</groupId>
            <artifactId>jaxb2-basics</artifactId>
            <version><!-- version --></version>
        </plugin>
    </plugins>
</configuration>

person 6ton    schedule 07.08.2015    source источник
comment
версия плагина? В настоящее время я использую версию 0.12.1, и все работает нормально. В качестве альтернативы ищите <args />   -  person Luca Basso Ricci    schedule 07.08.2015
comment
версия 0.8.3. попробую обновить. Я пробовал аргументы, но это не сработало   -  person 6ton    schedule 07.08.2015
comment
одиночный <arg> должен иметь - впереди, как <arg>-episode</arg> и <arg>-episodefile target.episode</arg>   -  person Luca Basso Ricci    schedule 07.08.2015
comment
@LucaBassoRicci добавил еще несколько объяснений проблемы, которую я вижу   -  person 6ton    schedule 07.08.2015
comment
плагин, отвечающий за анализ typeId arg, включен в <plugins>? обычно это причина   -  person Luca Basso Ricci    schedule 07.08.2015
comment
Yup typeid для плагина   -  person 6ton    schedule 07.08.2015
comment
Я столкнулся с той же проблемой. Как вы это решили?   -  person justcurious    schedule 13.10.2016


Ответы (1)


Автор maven-jaxb2- плагин и

достаточно тщательно тестируется в каждом выпуске, поэтому Я уверен, что это работает.

useDependenciesAsEpisodes просто добавляет все ваши JAR-файлы зависимостей как JAR-файлы «эпизодов», это не должно влиять на создание эпизодов.

-typeId=7000 немного подозрительно, какой плагин XJC обрабатывает эту команду? Если нет, это может потенциально помешать -episode, поэтому я бы сначала посмотрел на это.

Что действительно помогает, так это просмотр журнала mvn clean install -e -X. Он должен блокировать аргументы, окончательно переданные XJC, чтобы вы могли обнаружить нарушения.

Если ничего не помогает, соберите тестовый проект с минимальным воспроизведением и отправьте мне PR для этого проекта в https://github.com/highsource/maven-jaxb2-plugin-support напр. под e/episode-file-not-being-generated.

person lexicore    schedule 09.08.2015
comment
Спасибо @lexicore. typeId — это параметр, необходимый для пользовательского плагина (я не создавал его, но должен использовать его для настройки генерации модели). Я не знаю, как работает раздел ‹args›, но похоже, что плагин должен использовать args (чего, может быть, не делает пользовательский плагин?), поскольку ‹arg›-XtoString‹/arg› работает с jaxb2-basic , но когда я добавляю typeId, он ломается. Однако useDependenciesAsEpisodes каким-то образом меняет это поведение, и arg -typeId работает. Я пытаюсь воспроизвести эту проблему, используя 1 из образцов, и опубликую PR, если он действителен. - person 6ton; 10.08.2015