jaxb2-maven-plugin фильтрация источников xsd не работает - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть проект, который генерирует Java исходный код из файла *.xsd с использованием jaxb2-maven-plugin.

. Это работает хорошо, если у меня не было разрешения git megrge для разрешения. В этом случае git оставляет файл *.orig в том же месте. jaxb2-maven-plugin забирает эту копию и, следовательно, дает сбой:

[ERROR] file:/D:/data/scm-workspace/anderes/Jaxb/jaxb2-maven-plugin_not-filtering/src/main/xsd/demo.xsd.orig [8,15] 
org.xml.sax.SAXParseException: 'Demo' is already defined

В моем pom.xml я добавил фильтр, как описано здесь .

  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jaxb2-maven-plugin</artifactId>
    <version>2.5.0</version>
    <executions>
      <execution>
        <id>xjc-codegen</id>
        <goals>
          <goal>xjc</goal>
        </goals>
      </execution>
    </executions>
    <configuration>
      <xjbExcludeFilters>
        <filter implementation="org.codehaus.mojo.jaxb2.shared.filters.pattern.PatternFileFilter">
          <patterns>
            <pattern>\.orig</pattern> <!-- file created by git -->
          </patterns>
        </filter>
      </xjbExcludeFilters>
      <schemaFiles>demo.xsd</schemaFiles>
      <!-- <clearOutputDir>true</clearOutputDir> -->
      <outputDirectory>target/generated-sources/jaxb</outputDirectory>
    </configuration>
  </plugin>

в журнал (mvn -X ...) Я вижу, что фильтр выбран:

[DEBUG]   (f) xjbExcludeFilters = [Filter [PatternFileFilter]
|        Processes nulls: [false]
|        Accept on match: [true]
|        Initialized    : [false]
|        1 regularExpressions :
|         [1/1]: (\p{javaLetterOrDigit}|\p{Punct})+\.orig]
[DEBUG] -- end configuration --

, но позже фильтр не применяется и файл резервной копии не исключается:

+=================== [Filtered sources]
|
| 3 Exclude patterns:
| [1/3]: Filter [PatternFileFilter]

|        Processes nulls: [false]

|        Accept on match: [true]
|        Initialized    : [true]
|        3 regularExpressions :
|         [1/3]: (\p{javaLetterOrDigit}|\p{Punct})+README.*
|         [2/3]: (\p{javaLetterOrDigit}|\p{Punct})+\.xml
|         [3/3]: (\p{javaLetterOrDigit}|\p{Punct})+\.txt
| [2/3]: Filter [FileFilterAdapter]
|        Processes nulls: [false]

| [3/3]: Filter [PatternFileFilter]

|        Processes nulls: [false]

|        Accept on match: [true]
|        Initialized    : [true]
|        1 regularExpressions :
|         [1/1]: (\p{javaLetterOrDigit}|\p{Punct})+\.xjb
|
| 1 Standard Directories:
| [1/1]: src/main/xsd
|
| 2 Results:
| [1/2]: file:/D:/data/scm-workspace/anderes/Jaxb/jaxb2-maven-plugin_not-filtering/src/main/xsd/demo.xsd
| [2/2]: file:/D:/data/scm-workspace/anderes/Jaxb/jaxb2-maven-plugin_not-filtering/src/main/xsd/demo.xsd.orig

как мне заставить работать фильтрацию?

...