我试图使用JAXB插件使用jaxb在不同的包中将多个XSD转换为POJO。我将其设置为使用多个执行块,然后执行第一个执行块,然后收到一条消息:模式或绑定文件中没有检测到任何更改
这是我的pom.xml的一个摘录:
...
<build>
<pluginManagement>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>1.5</version>
</plugin>
</pluginManagement>
<plugins>
<!-- JAXB GENERATOR PLUGIN -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<id>Application0</id>
<phase>generate-sources</phase>
<goals>
<goal>xjc</goal>
</goals>
<configuration>
<schemaDirectory>src/main/webapp/WEB-INF/xsd/version1</schemaDirectory>
<packageName>za.co.mycee.application.model</packageName>
<outputDirectory>${basedir}/src/main/java/</outputDirectory>
<clearOutputDir>false</clearOutputDir>
<source>1.5</source>
<target>2.1</target>
<arguments>-no-header</arguments>
</configuration>
</execution>
<execution>
<id>Application1</id>
<phase>generate-sources</phase>
<goals>
<goal>xjc</goal>
</goals>
<configuration>
<schemaDirectory>src/main/webapp/WEB-INF/xsd/version1</schemaDirectory>
<packageName>za.co.mycee.application.model.version1</packageName>
<outputDirectory>${basedir}/src/main/java/</outputDirectory>
<clearOutputDir>false</clearOutputDir>
<source>1.5</source>
<target>2.1</target>
<arguments>-no-header</arguments>
</configuration>
</execution>
<execution>
<id>Application2</id>
<phase>generate-sources</phase>
<goals>
<goal>xjc</goal>
</goals>
<configuration>
<schemaDirectory>src/main/webapp/WEB-INF/xsd/version2</schemaDirectory>
<packageName>za.co.mycee.application.model.version2</packageName>
<outputDirectory>${basedir}/src/main/java/</outputDirectory>
<clearOutputDir>false</clearOutputDir>
<source>1.5</source>
<target>2.1</target>
<arguments>-no-header</arguments>
</configuration>
</execution>
</executions>
</plugin>
...
</build>
....这是我得到的错误消息:
[INFO] --- jaxb2-maven-plugin:1.5:xjc (Application) @ mycee-application ---
[INFO] Generating source...
[INFO] parsing a schema...
[INFO] compiling a schema...
[INFO] za/co/mycee/application/model/AddressType.java
[INFO] ...
[INFO] za/co/mycee/application/model/package-info.java
[INFO]
[INFO] --- jaxb2-maven-plugin:1.5:xjc (Application1) @ mycee-application ---
[INFO] No changes detected in schema or binding files - skipping source generation.
[INFO]
[INFO] --- jaxb2-maven-plugin:1.5:xjc (Application2) @ mycee-application ---
[INFO] No changes detected in schema or binding files - skipping source generation.如果我在周围交换执行块,第一个块总是执行,对于剩下的两个块,我得到相同的消息。
对如何解决这个问题有什么想法吗?
发布于 2014-03-24 12:30:57
通过升级到版本1.6来修正它
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>1.6</version>
</plugin>和
<!-- JAXB GENERATOR PLUGIN -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>1.6</version>
....修正了版本1.6,在版本1.5中,所有执行块都使用相同的staleFile:http://jira.codehaus.org/browse/MJAXB-8
发布于 2022-08-04 09:04:46
我无法使用插件的1.6版本来解决这个问题(DataSource类找不到,即使使用javax-注释依赖关系也不可能解决这个问题,就像一些帖子中所建议的那样)。
但是,我找到了一种使jaxb插件1.5能够执行多个执行的方法:在每个节中定义的每个部分中,定义以下参数:
<execution>
....
<configuration>
....
<staleFile>${project.build.directory}/some directories/staleFile>
</configuration>
</execution>当然,对于每次执行,绝对文件路径必须是唯一的。
https://stackoverflow.com/questions/22608289
复制相似问题