Как устранить зависимость между файлами, сгенерированными плагином maven во время компиляции?

Хорошо, позвольте мне попытаться изложить мою проблему как можно менее запутанно.

У меня есть стандартный проект Maven с несколькими плагинами Maven -

1) maven-antrun-plugin
2) Custom maven plugin, say, my-maven-plugin
3) jaxws-maven-plugin

Теперь вот сложная часть.

Первый плагин генерирует несколько файлов.java, которые я сейчас размещаю в "$ {project.build.directory} / java"

Второй плагин генерирует другой набор файлов.java, все из которых я снова помещаю в "$ {project.build.directory} / java". Тем не менее, они находятся под разными структурами пакетов.

Оба этих плагина запускаются на этапе "создания источников".

Теперь мой третий плагин, jaxws-maven-plugin, пытается использовать файлы классов для файлов, сгенерированных 1-м и 2-м плагинами, в качестве SEI для генерации WSDL. Но файлы классов не будут созданы maven в этот момент во время компиляции, и плагин выдает сообщение "Class Not found".

Итак, как мне решить эту проблему? Кроме того, поскольку во время фазы "создания источников" произошла ошибка, я не вижу файлы.class для каких-либо других исходных файлов из моего проекта в каталоге target / classes.

И вот еще один поворот. Некоторые из моих исходных файлов импортируют эти сгенерированные во время компиляции исходные файлы в коде (Вы не представляете, насколько сильно я сейчас ищу этого разработчика!!)

Я попытался описать мою проблему наилучшим образом, поэтому, пожалуйста, не стесняйтесь спрашивать любые другие детали или разъяснения.

1 ответ

Запустить вручную build-helper-maven-plugin а также maven-compile-plugin до jaxws-maven-plugin:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            ...
            <executions>
                <execution>
                    <phase>generate-sources</phase>
                </execution>
                ...
            </executions>
        <plugin>
        <plugin>
            ...
            <artifactId>my-maven-plugin</artifactId>
            ...
            <executions>
                <execution>
                    <phase>generate-sources</phase>
                </execution>
                ...
            </executions>
        <plugin>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <executions>
                <execution>
                    <id>add-source</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>add-source</goal>
                    </goals>
                    <configuration>
                        <sources>
                            <source>some directory</source>
                            ...
                        </sources>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <artifactId>maven-compile-plugin</artifactId>
            ...
            <executions>
                <execution>
                    <phase>generate-sources</phase>
                </execution>
                <goals>
                    <goal>compile</goal>
                </goals>
            </executions>
        <plugin>
        <plugin>
            <artifactId>jaxws-maven-pluginn</artifactId>
            ...
        <plugin>

    </plugins>
</build>

Я не проверял это, но я думаю, что это должно работать.

Другие вопросы по тегам