我使用maven-jab2-plugin从XSD架构生成POJO。我生成的类没有任何集合的字段的setter。如何为集合生成setter?
任何人都可以解释默认情况下不启用setter的原因吗?
答案 0 :(得分:7)
使用JAXB2-Basics中包含的Setters plugin,如文档here所述。
我已经复制了他们的用法示例(并将其修改为专门显示setter):
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.7.0</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<args>
<arg>-Xsetters</arg>
</args>
<plugins>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics</artifactId>
<version><!-- Current version --></version>
</plugin>
</plugins>
</configuration>
</plugin>
在依赖项中包含JAXB2 Basics Runtime包:
<dependency>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics-runtime</artifactId>
<version><!-- Current version --></version>
</dependency>
答案 1 :(得分:0)
为了生成用于收集的 setter,我只找到了一个适合我的解决方案。您必须向 org.andromda.thirdparty.jaxb2_commons 添加依赖项。但是,此解决方案适用于 jaxb2-maven-plugin 版本 2.5.0,对于版本 2.3.1 不起作用。 举个例子:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>2.5.0</version>
<dependencies>
<dependency>
<groupId>org.andromda.thirdparty.jaxb2_commons</groupId>
<artifactId>collection-setter-injector</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
<executions>
<execution>
......
</execution>
</executions>
<configuration>
<sources>
......
</sources>
<arguments>-Xcollection-setter-injector</arguments>
<clearOutputDir>false</clearOutputDir>
<extension>true</extension>
</configuration>
</plugin>