Java 如何在Maven中跳过生成源代码
在Maven中有没有跳过生成源代码的方法Java 如何在Maven中跳过生成源代码,java,maven,build,Java,Maven,Build,在Maven中有没有跳过生成源代码的方法 通过命令行选项执行此操作,我有一个场景,在这个场景中,每当WSDL或WADL发生更改时,我都会生成CXF类。因此,无论何时需要,我都会显式地生成它。因此,我创建了一个单独的配置文件,一个新的配置文件cxf gen,以及我常用的开发、uat和syst。它有生成类的插件。简而言之,每当我需要重新生成类时,我就会切换到概要文件并运行generate sources。这是我使用的示例配置文件 <profiles> <profile>
通过命令行选项执行此操作,我有一个场景,在这个场景中,每当WSDL或WADL发生更改时,我都会生成CXF类。因此,无论何时需要,我都会显式地生成它。因此,我创建了一个单独的配置文件,一个新的配置文件cxf gen,以及我常用的开发、uat和syst。它有生成类的插件。简而言之,每当我需要重新生成类时,我就会切换到概要文件并运行generate sources。这是我使用的示例配置文件
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<envName>dev</envName>
</properties>
</profile>
<profile>
<id>uat</id>
<properties>
<envName>uat</envName>
</properties>
</profile>
<profile>
<id>jaxB-gen</id>
<properties>
<envName>dev</envName>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>1.5</version>
<configuration>
<!-- CONFIGS ->
</configuration>
<executions>
<execution>
<id>xjc</id>
<goals>
<goal>xjc</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>code-gen</id>
<properties>
<envName>dev</envName>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>${cxf.version}</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<!-- CONFIGS ->
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- wadl2java Required only when JAXRS classes are to be generated -->
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-wadl2java-plugin</artifactId>
<version>2.7.6</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<!-- CONFIGS ->
</configuration>
<goals>
<goal>wadl2java</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.googlecode.jsonschema2pojo</groupId>
<artifactId>jsonschema2pojo-maven-plugin</artifactId>
<version>0.3.7</version>
<configuration>
<!-- CONFIGS ->
</configuration>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
发展
真的
发展
uat
uat
jaxB-gen
发展
org.codehaus.mojo
jaxb2 maven插件
1.5
org.apache.cxf
cxf-wadl2java-plugin
2.7.6
生成源
生成源
这是一个老生常谈的问题,尽管有些答案可能会起作用,但没有一个是理想的
这个答案并没有破坏干净的构建:调用“mvn”仍然会产生预期的向后兼容结果,这有利于持续集成。此外,这个答案并不依赖于将生成的代码提交到版本控制,这是一个坏主意,因为它可能与源代码不同步
我假设GenerateSources阶段绑定到一个插件目标
答案是创建一个名为“clean build”的配置文件,默认情况下该配置文件处于活动状态,并包含插件绑定。当开发人员信任他们可以安全地跳过生成源时,他们可以运行以下命令
mvn -P !clean-build <goal>
mvn-P!干净利落
或者如果感叹号需要转义
mvn -P \!clean-build <goal>
mvn-P\!干净利落
下面是pom.xml的样子
<profiles>
<profile>
<id>clean-build</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
...
<executions>
<execution>
...
<phase>generate-sources</phase>
...
</execution>
</executions>
...
</plugin>
</plugins>
</build>
</profile>
</profiles>
干净利落
真的
...
...
生成源
...
...
这个答案需要Maven 2.0.10+。如果您使用的是Maven源插件(适用于Maven 3.6.0):
-Dmaven.source.skip=true
为什么要这样做?这一阶段有什么关系?显示您的pom文件?我不想重新生成源代码,因为文件中没有架构更改。这只是一个示例,您可以使用类似的机制…好的,您可以通过一个配置文件进行生成,将其放入名为“gen schema”的配置文件中,然后将生成的源代码放入版本控制。如果需要更改架构,只需激活配置文件。将生成的代码提交到版本控制是一个坏主意,因为它可能与架构不同步。这几乎是一个好答案。问题是它应该默认生成源代码,而不是按需生成。否则,默认情况下将破坏原始的干净构建(mvn编译)。好的文档可以解决这个问题,但最好在POM中解决。答案与问题相匹配:“有没有办法在Maven中跳过生成源代码?通过命令行选项来实现?”。默认情况下,它是跳过的,当您想通过命令行执行此操作时,您可以执行类似“mvnjaxb2:xjc-pjaxbgen”@Tristan插件中有一个字段,您可以将其设置为${cxf.skip},然后从命令行传递-Dcxf.skip=true