У меня есть кое-что, чего я не понимаю с maven и идентификаторами выполнения с eclipse в простом проекте maven (jar)
Я использую eclipse 2018-12 со встроенным maven (3.5.3 / 1.10.020181127-2120)
Когда я пытаюсь этот код в pom.xml
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.3.2</version>
<executions>
<execution>
<id>first-cli</id>
<configuration>
<mainClass>com.zb.test.HelloFirst</mainClass>
</configuration>
</execution>
<execution>
<id>second-cli</id>
<configuration>
<mainClass>com.zb.test.HelloSecond</mainClass>
</configuration>
</execution>
</executions>
</plugin>
, когда я выполняю
exec:java@first-cli
, я получаю результат класса HelloFirst.java
[INFO] Scanning for projects...
[INFO]
[INFO] ----------------------< com.zb.membox:test >-----------------------
[INFO] Building test 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- exec-maven-plugin:1.3.2:java (first-cli) @ test ---
[WARNING] Warning: killAfter is now deprecated. Do you need it ? Please comment on MEXEC-6.
hello world from first client
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.019 s
[INFO] Finished at: 2019-02-09T13:54:35+01:00
[INFO] ------------------------------------------------------------------------
когда я выполняю
exec:java@second-cli
Я получил результат класса HelloSecond.java
[INFO] Scanning for projects...
[INFO]
[INFO] ----------------------< com.zb.membox:test >-----------------------
[INFO] Building test 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- exec-maven-plugin:1.3.2:java (second-cli) @ test ---
[WARNING] Warning: killAfter is now deprecated. Do you need it ? Please comment on MEXEC-6.
hello world from second client
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.019 s
[INFO] Finished at: 2019-02-09T13:54:35+01:00
[INFO] ------------------------------------------------------------------------
Я получил результат класса HelloSecond.java
Когда я указываю идентификатор, который не существует
exec:java@third-cli
, он выдает ошибку, что я и ожидал.
[INFO] Scanning for projects...
[INFO]
[INFO] ----------------------< com.zb.membox:test >-----------------------
[INFO] Building test 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- exec-maven-plugin:1.3.2:java (third-cli) @ test ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.014 s
[INFO] Finished at: 2019-02-09T13:55:17+01:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.3.2:java (third-cli) on project test: The parameters 'mainClass' for goal org.codehaus.mojo:exec-maven-plugin:1.3.2:java are missing or invalid -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginParameterException
, но когда я пытаюсь сделать то же самоеЧто-то с плагином компилятора. Здесь есть кое-что странное: часть pom.xml для плагина компилятора.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
<executions>
<execution>
<id>compilefirst</id>
<phase>none</phase>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</execution>
<execution>
<id>compilesecond</id>
<phase>none</phase>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</execution>
<execution>
<id>default-compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
Я изменяю исходную цель, чтобы убедиться, что выполнение выполняется, когда я выполняю
clean compiler:compile@compilefirst
все в порядке, компиляция занимает 1.5 java версии
clean compiler:compile@compilesecond
все в порядке, компиляция занимает 1.6 jaва версия
но если я попытаюсь с несуществующим идентификатором ... он работает без ошибок !!!
clean compiler:compile@compilethird
результат
[INFO] Scanning for projects...
[INFO]
[INFO] ----------------------< com.zb.membox:test >-----------------------
[INFO] Building test 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ test ---
[INFO] Deleting C:\Users\zb\Desktop\wspace-java\test\target
[INFO]
[INFO] --- maven-compiler-plugin:3.2:compile (compilethird) @ test ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 30 source files to C:\Users\zb\Desktop\wspace-java\test\target\classes
[INFO] /C:/Users/zb/Desktop/wspace-java/test/src/main/java/com/zb/test/TestMbREG.java: C:\Users\zb\Desktop\wspace-java\test\src\main\java\com\zb\test\TestMbREG.java uses or overrides a deprecated API.
[INFO] /C:/Users/zb/Desktop/wspace-java/test/src/main/java/com/zb/test/TestMbREG.java: Recompile with -Xlint:deprecation for details.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.279 s
[INFO] Finished at: 2019-02-09T14:00:24+01:00
[INFO] ------------------------------------------------------------------------
Мой вопрос, почему?Компилятор maven имеет идентификатор выполнения по умолчанию?
Спасибо большое за все ответы.