Jaxb2使用每个mvn clean软件包重新生成类

idi*_*ous 5 jaxb jaxb2 maven maven-jaxb2-plugin

我的pom看起来像

<plugins>
        <plugin>
            <groupId>org.jvnet.jaxb2.maven2</groupId>
            <artifactId>maven-jaxb2-plugin</artifactId>
            <version>0.12.3</version>
            <executions>
                <execution>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <schemaLanguage>WSDL</schemaLanguage>
                <generateDirectory>src/main/java</generateDirectory>
                <schemaDirectory>src/main/resources/wsdl/</schemaDirectory>
                <schemaIncludes>
                    <include>*.xsd</include>
                    <include>draw/*.xsd</include>
                </schemaIncludes>
            </configuration>
        </plugin>

    </plugins>
Run Code Online (Sandbox Code Playgroud)

当我这样做时,mvn clean package它是根据配置构建的。但是,一旦构建了它,我就不想每次都构建它,mvn clean package除非XSD已对其进行了某种修改。

我该如何实现?

His*_*lil 5

此插件中为目标声明的默认阶段<goal>generate</goal>为generate-resources。参考Maven默认生命周期,您不能跳过各个阶段。mvn phase-x命令始终表示“运行所有阶段,直到包含x的阶段为止”。

您可能使用的选项是profile。因此,您可以使用或不使用资源来概要分析要构建的项目。

例:

  <profiles>
    <profile>
        <id>GEN-RESOURCES</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.jvnet.jaxb2.maven2</groupId>
                    <artifactId>maven-jaxb2-plugin</artifactId>
                    <version>0.12.3</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>generate</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <schemaLanguage>WSDL</schemaLanguage>
                        <generateDirectory>src/main/java</generateDirectory>
                        <schemaDirectory>src/main/resources/wsdl/</schemaDirectory>
                        <schemaIncludes>
                            <include>*.xsd</include>
                            <include>draw/*.xsd</include>
                        </schemaIncludes>
                    </configuration>
                </plugin>

            </plugins>
        </build>
    </profile>
</profiles>
Run Code Online (Sandbox Code Playgroud)

激活配置文件使用-P

mvn clean package -PGEN-RESOURCES
Run Code Online (Sandbox Code Playgroud)

否则将不会生成任何东西,这里将解释Maven配置文件

我希望这有帮助。


lex*_*ore 5

免责声明:我是的作者maven-jaxb2-plugin。

首先,不要生成成src/main/java。

接下来,如果配置正确,则除非进行某些更改,否则插件将不会重新生成。该插件收集“源”和“目标”文件,并且仅在“源”文件的时间戳比“目标”文件的时间戳更新时才生成。

有关其工作原理的更多信息,请参见文档中的最新检查。

但是,这假设插件可以明确确定“源”文件和“目标”文件的时间戳。这就是为什么您应该将代码生成到target/generated-source/<dir>而不是in 中的原因之一src/main/java。

接下来,这绝对不工作mvn *clean* package的*clean*移除了target,因此target/generated-source/<dir>。因此,只要运行mvn package代替mvn clean package。