Почему несуществующий идентификатор все еще выполняется - PullRequest
0 голосов
/ 09 февраля 2019

У меня есть кое-что, чего я не понимаю с 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 имеет идентификатор выполнения по умолчанию?

Спасибо большое за все ответы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...