Когда я запускаю проект 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>
Как я могу устранить эту ошибку?
вам нужно настроить плагин 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>
Invalid task '1': you must specify a valid lifecycle phase, or a goal in the format plugin:goal or pluginGroupId:pluginArtifactId:pluginVersion:goal
У меня такая же проблема с моим проектом 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, которые могут показывать неожиданные ошибки.
Вы добавили плагин как неправильную зависимость. Вы должны добавить его в качестве плагина.
<build>
<plugins>
<plugin>
<groupId>org.co dehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
</plugin>
</plugins>
</build>
Я действительно не вижу, как он работает в NetBeans, но эта конфигурация определенно необходима для его работы через командную строку.
Invalid task '1': you must specify a valid lifecycle phase, or a goal in the format plugin:goal or pluginGroupId:pluginArtifactId:pluginVersion:goal
exec-maven-plugin
в ваш pom.xml?