我的intellij中有一个模块,它有自己的maven项目结构(src/main/java,src/main/test)。在这个项目中,我编写了一个包JAXB类(java)。然后,在这个包中,通过org.codehaus.mojo:jaxb2-maven-plugin的模式目标,我通常使用我的包-info。我发现情况并非如此。当在目标输出文件夹中生成XSD时。我的约会对象仍然转换成这样的字符串:
<xs:element minOccurs="0" name="dateSSP" type="xs:string"/>我期待像这样的dateTime类型:
<xs:element minOccurs="0" name="dateSSP" type="xs:dateTime"/>很明显,我的包info.java文件被忽略了。但奇怪的是,当我完全构建时,不仅仅是模块,而是整个主项目(多模块项目),为这个模块生成的XSD是正确的!我在XSD中有dateTime类型。但是单独构建,生成的XSD有一个string类型。
我也不知道原因。
这里是插件的配置(basic):
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>2.5.0</version>
<executions>
<execution>
<id>schemagen</id>
<goals>
<goal>schemagen</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
</dependencies>
<configuration>
<clearOutputDir>true</clearOutputDir>
<sources>
<source>src/main/java/com/allegoria/notariat/corpus/redaction/ro</source>
<source>src/main/java/com/allegoria/notariat/business</source>
</sources>
<!--<verbose>true</verbose>-->
<transformSchemas>
<transformSchema>
<uri>https://www.signatureparfiducial.fr/redaction</uri>
<toFile>corpus-redaction.xsd</toFile>
</transformSchema>
</transformSchemas>
<schemaSourceExcludeFilters>
<noAdapter implementation="org.codehaus.mojo.jaxb2.shared.filters.pattern.PatternFileFilter">
<patterns>
<pattern>Adapter\.java</pattern>
</patterns>
<patternPrefix>.*</patternPrefix>
</noAdapter>
</schemaSourceExcludeFilters>
</configuration>
</plugin>发布于 2022-03-21 09:17:50
对不起,我的朋友;)在包-info.java中,DateAdapter类位于相关模块之外的另一个包中;它位于另一个模块中。因此,由于我只构建具有JAXB类的模块,所以DateAdapter不生成,然后被XmlAdapters忽略。
谢谢。
https://stackoverflow.com/questions/71555049
复制相似问题