Maven пропускает компиляцию

Я хочу использовать Maven для выполнения определенного плагина, которому нужен только исходный код, но я не хочу, чтобы Maven собирал что-либо (в основном потому, что проект просто не компилируется).

Как сообщить Maven пропустить шаг компиляции и просто запустить его плагин, а затем скомпилировать сгенерированные ресурсы вместе в приятном JAR? (Процедура последнего шага уже известна мне.)

Дополнительная информация:

Поэтому мы много раз пробовали, например:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.0</version>
    <configuration>
        <excludes>
            <exclude>**/*</exclude>
        </excludes>
        <source>1.7</source>
            <target>1.7</target>
    </configuration>
    <executions>
        <execution>
            <phase>deploy</phase>
        </execution>
    </executions>
</plugin>

Хотя, когда мы делаем mvn package мы получаем следующее:

[INFO] --- maven-compiler-plugin:3.0:compile (default-compile) @ project ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling ALOTOF source files to /home/myname/dir/dir/project/target/classes

сообщение отредактировано c.

Ответ 1

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-compiler-plugin</artifactId>
   <executions>
     <execution>
       <id>default-compile</id>
       <phase>compile</phase>
       <goals>
          <goal>compile</goal>
       </goals>
       <configuration>
         <skipMain>true</skipMain> <--Skip
       </configuration>
     </execution>
   </executions>
</plugin>

Установите значение "true" для обхода компиляции основных источников. Его использование НЕ РЕКОМЕНДУЕТСЯ, но довольно удобно. Свойство пользователя: maven.main.skip.

mvn package -Dmaven.main.skip

Ответ 2

Функциональность Maven частично организована в плагинах, которая содержит цели. Эти цели могут быть выполнены без участия в жизненном цикле. Например, для jar-plugin jar-goal вы будете ссылаться:

mvn jar:jar

Если вы просматриваете список доступных плагинов, вы, вероятно, найдете нужную функциональность. Если необходимо, вы даже можете определить "сборку", чтобы выбрать файлы, которые вы хотите связать, в архив.

Ответ 3

Чтобы предотвратить компиляцию Maven по умолчанию, сначала убедитесь, что конфигурация maven-compiler-plugin имеет useIncrementalCompilation = false:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.3</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
        <useIncrementalCompilation>false</useIncrementalCompilation>
    </configuration>
</plugin>

Кроме того, если ваш профиль Maven использует maven-clean-plugin, он по умолчанию обнаруживает и удаляет каталоги, сконфигурированные в файле project.build.directory, project.build.outputDirectory, project.build.testOutputDirectory и project.reporting.outputDirectory.

Чтобы отключить эту очистку по умолчанию, добавьте конфигурацию maven-clean-plugin: excludeDefaultDirectories = true:

<excludeDefaultDirectories>true</excludeDefaultDirectories>

Ответ 4

Я бы определил отдельного поместья только для создания этого отдельного артефакта.

В этом помпе вы используете только плагин генерации ресурсов и упаковку.

Тогда вам не нужно беспокоиться об этом, делая слишком много.