Как пропустить генерируемые исходники в Maven

Есть ли способ пропустить генерировать-источники в Maven?

Делать это через параметры командной строки

2 ответа

Этот параметр командной строки должен работать, если вы используете maven-source-plugin (работает с Maven 3.6.0):
-Dmaven.source.skip=true

У меня есть сценарий, в котором я генерирую классы CXF, когда происходит изменение в WSDL или WADL. Поэтому я генерирую это явно всякий раз, когда мне нужно. Поэтому я создал отдельный профиль новый профиль cxf-gen вместе с моим обычным dev, 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>

Это старый вопрос, и хотя некоторые ответы как-то сработают, ни один из них не идеален.

Этот ответ не нарушает чистую сборку: вызов mvn по-прежнему дает ожидаемый и обратно-совместимый результат, что хорошо для непрерывной интеграции. Также этот ответ не основывается на фиксации сгенерированного кода для контроля версий, что является плохой идеей, поскольку он может быть не синхронизирован с источником.

Я предполагаю, что фаза создания источников связана с целью плагина.

Ответ состоит в том, чтобы создать профиль с именем "clean-build", который по умолчанию активен и содержит привязку вашего плагина. Когда разработчик доверяет, они могут безопасно пропустить генерируемые источники, они могут выполнить следующее.

mvn -P !clean-build <goal>

Или, если восклицательный знак необходимо экранировать.

mvn -P \!clean-build <goal>

Вот как может выглядеть файл 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+.

Другие вопросы по тегам