В качестве аргумента XJC во время SchemaGen указывается неверный путь - PullRequest
0 голосов
/ 08 октября 2019

Вот мои настройки Maven Project (они унаследованы)

ROOT
--myProj
  --pom.xml
--myProj-commons
  --pom.xml
  myProj-schemas
    --pom.xml
    --src
      --main
        --xsd
          --something
            --xsd1.xsd
            --xsd2.xsd
        --xjbs
          --some-binding.xjb

myProj-schemas имеет упаковку jar и является дочерним для myProj-commons.

myProj-commons имеет упаковкуpom и является дочерним элементом myProj, даже если они находятся на одном уровне каталогов.

pom в myProj имеет упаковку pom.

ПРОБЛЕМА:

Во времяSchemaGen есть ошибки. С отладкой я вижу, что неправильный путь к XSD предоставляется в качестве аргументов XJC. Это используемый путь:

commons/myProj-schemas/src/main/xsd/something/xsd1.xsd
commons/myProj-schemas/src/main/xsd/something/xsd2.xsd

, когда он должен быть:

myProj-commons/myProj-schemas/src/main/xsd/something/xsd1.xsd
myProj-commons/myProj-schemas/src/main/xsd/something/xsd2.xsd

Таким образом, он обрезает префикс "myProj-".

Этоpom.xml для myProj:

....
<modelVersion>4.0.0</modelVersion>

<groupId>com.me</groupId>
<artifactId>myProj</artifactId>
<version>1.0-SNAPSHOT</version>
<name>myProj</name>
<packaging>pom</packaging>

<modules>
    <module>../myProj-commons<module>
</modules>

<build>
    <sourceDirectory>${basedir}/src/main/java</sourceDirectory>

....

Это pom.xml для myProj-commons:

....
<modelVersion>4.0</modelVersion>

<parent>
    <groupId>com.me</groupId>
    <artifactId>myProj</artifactId>
    <version>1.0-SNAPSHOT</version>
    <relativePath>../myProj/pom.xml</relativePath>
</parent>

<name>myProj-commons</name>
<artifactId>myProj-commons</artifactId>
<packaging>pom</packaging>

<modules>
    <module>myProj-schemas</module>
</modules>
....

Это pom.xml для myProj-схем

....
<modelVersion>4.0.0</modelVersion>

<parent>
    <groupId>com.me</groupId>
    <artifactId>myProj-commons</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>

<name>myProj-schemas</name>
<artifactId>myProj-schemas</artifactId>
<packaging>jar</packaging>

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>jaxb2-maven-plugin</artifactId>
            <version>2.3.1</version>
            <executions>
                <execution>
                    <id>xjc</id>
                    <goals>
                       <goal>xjc</goal>
                    <goals>
                    <configuration>
                        <sources>
                            <source>src/main/xsd/something</source>
                        </sources>
                        <xjbSources>
                            <xjbSource>src/main/xjbs/some-binding.xjb</xjbSource>
                        </xjbSources>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

....

Если переместить файл pom.xml из myProj на корневой уровень (и настроить другие poms), все будет работать нормально. Я знаю, что это предпочтительный способ сделать родитель / ребенок, но я имею дело с устаревшим кодом. Он должен быть в состоянии работать так, как он выложен. Это ошибка или я что-то упустил.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...