kuhajeyan
kuhajeyan

Reputation: 11047

How to skip generate-sources in Maven

Is there way to skip generate-sources in Maven?

Doing it via command line options

Upvotes: 8

Views: 15810

Answers (3)

boot-and-bonnet
boot-and-bonnet

Reputation: 761

This command line option should work if you are using maven-source-plugin (works with Maven 3.6.0):
-Dmaven.source.skip=true

Upvotes: 4

marcv81
marcv81

Reputation: 876

This is an old question and although some answers would somehow work none of them are ideal.

This answer does not break clean builds: calling "mvn <goal>" still produces the expected and backward-compatible result, which is good for continuous integration. Also this answer does not rely on committing generated code to version control, which is a bad idea as it might become out of sync with the source.

I am assuming the generate-sources phase is bound to a plugin goal.

The answer is to create a profile called "clean-build" which is active by default and contains your plugin binding. When a developer trusts they can safely skip generate-sources they may run the following.

mvn -P !clean-build <goal>

Or if the exclamation mark needs to be escaped.

mvn -P \!clean-build <goal>

Here is what the pom.xml might look like.

<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>

This answer requires Maven 2.0.10+.

Upvotes: 2

Karthik Prasad
Karthik Prasad

Reputation: 10034

I've scenario where I generate CXF classes when ever I there is change in WSDL or WADL. Hence I generate it explicitly whenever I need. Hence I created a separate profile a new profile cxf-gen along with my usual dev, uat, syst. which has plugins to generate the classes. In short whenever I need to regenerate the classes I switch to the profile and run generate-sources. Here is sample profile I use.

<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>

Upvotes: 4

Related Questions