Ошибка Maven при использовании командной строки для выполнения Java-программы

1

Когда я запускаю проект Maven из Netbeans, все работает правильно. Однако, когда я использую командную строку:

mvn exec:java -Dexec.mainClass="Main.Laucher" -Dexec.args=$args1 $args2 $args3

Я получаю эту ошибку:

     [ERROR] BUILD FAILURE
     [INFO] ------------------------------------------------------------------------
     [INFO] Invalid task '1': you must specify a valid lifecycle phase, or a goal in the format plugin:goal or
 pluginGroupId:pluginArtifactId:pluginVersion:goal
     [INFO] ------------------------------------------------------------------------
     [INFO] For more information, run Maven with the -e switch
     [INFO] ------------------------------------------------------------------------
     [INFO] Total time: < 1 second
    [INFO] Finished at: Mon Apr 21 12:06:23 CEST 2014
     [INFO] Final Memory: 7M/491M

Версия maven:

Apache Maven 2.2.1 (rdebian-8)
Java version: 1.7.0_51
Java home: /usr/lib/jvm/java-7-oracle/jre
Default locale: fr_FR, platform encoding: UTF-8
OS name: "linux" version: "3.2.0-58-generic" arch: "amd64" Family: "unix"

В pom.xml меня есть exec-maven-plugin:

     <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.2.1</version>
    <executions>
      <execution>
        <goals>
          <goal>java</goal>
        </goals>
      </execution>
    </executions>
    <configuration>
         <mainClass>simulation.amazon.Laucher</mainClass>
    </configuration>
    </plugin>

Как я могу устранить эту ошибку?

  • 0
    Вы добавили exec-maven-plugin в ваш pom.xml?
  • 0
    Да. Я отредактировал свой пост
Показать ещё 1 комментарий
Теги:
maven
maven-2

3 ответа

1

вам нужно настроить плагин pom.xml exec-maven-plugin plugin на ваш pom.xml например:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>1.3</version>
        <executions>
          <execution>
            ...
            <goals>
              <goal>java</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <mainClass>com.example.Main</mainClass>
          <arguments>
            <argument>argument1</argument>
            ...
          </arguments>
          <systemProperties>
            <systemProperty>
              <key>myproperty</key>
              <value>myvalue</value>
            </systemProperty>
            ...
          </systemProperties>
        </configuration>
      </plugin>
    </plugins>
  </build>
   ...
</project>
  • 0
    Даже если я добавлю правильный плагин, я получаю ту же ошибку. Я отредактировал оригинальный пост
  • 0
    Теперь ошибка просто: Invalid task '1': you must specify a valid lifecycle phase, or a goal in the format plugin:goal or pluginGroupId:pluginArtifactId:pluginVersion:goal
Показать ещё 1 комментарий
0

У меня такая же проблема с моим проектом maven в IntelliJ, и я нашел альтернативный способ заставить его работать, даже без плагина exec-maven. Я смог построить проект, выполнив этот ответ и включив цель по умолчанию в следующем файле pom.xml:

<defaultGoal>install</defaultGoal>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.6.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.0.0</version>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>

            </configuration>
            <executions>
                <execution>
                    <id>assemble-all</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>

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

Аналогичным образом, если вы должны запустить свою java-программу из командной строки, вы можете избежать этой ошибки, сначала создав свой проект, а затем назовите свой основной класс. Я специально сделал:

mvn package
java -cp target/myproject-1.0-SNAPSHOT-jar-with-dependencies.jar run.MyMain "a" "b" "c" "d"

и он работал нормально. Это похоже на достаточный обходной путь по сравнению с

mvn exec:java  -Dexec.mainClass=run.MyMain "a" "b" "c" "d"

и Intellij maven, которые могут показывать неожиданные ошибки.

0

Вы добавили плагин как неправильную зависимость. Вы должны добавить его в качестве плагина.

<build>
    <plugins>
        <plugin>
            <groupId>org.co dehaus.mojo</groupId> 
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.2.1</version>
        </plugin> 
     </plugins>
</build>

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

  • 0
    Даже если я добавлю правильный плагин, я получаю ту же ошибку. Я отредактировал оригинальный пост
  • 0
    Теперь ошибка просто: Invalid task '1': you must specify a valid lifecycle phase, or a goal in the format plugin:goal or pluginGroupId:pluginArtifactId:pluginVersion:goal

Ещё вопросы

Сообщество Overcoder
Наверх
Меню