我不知道如何在打包之前在Maven中运行任务。
<build>
<plugins>
[...]
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<phase>generate-sources</phase>
<configuration>
<tasks>
<echo message="****** TEST *****" />
</tasks>
</configuration>
</execution>
</executions>
</plugin>
当我运行mvn clean package
时,它不会被执行。我该如何执行此任务?我正在使用maven 3.0.5,如果重要的话。
**更新:**
按照建议添加id
和goal
,从命令行解决了问题。
<id>my-generate-sources</id>
<goals>
<goal>run</goal>
</goals>
为修复Eclipse错误,我在构建部分中配置了lifecyleMappingMetadata:
<build>
...
<pluginManagement>
<plugins>
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<versionRange>[1.7,)</versionRange>
<goals>
<goal>run</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
答案 0 :(得分:5)
您需要添加<goals>
标记(并且强烈建议添加<id>
标记,但如果插件只有一个<execution>
则不需要,例如
...
<execution>
<id>print-something</id>
<phase>generate-sources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo message="****** TEST *****" />
</tasks>
</configuration>
</execution>
...
答案 1 :(得分:2)
尝试添加执行ID:
<execution>
<phase>generate-sources</phase>
<id>my-generate-sources</id>
<configuration>
<tasks>
<echo message="****** TEST *****" />
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
<强>更新强>
我忘了跑步目标,正如吉拉姆所说。 Eclipse maven集成是我见过的最糟糕的事情之一。我们运行它的方式是通过maven命令行exclusivley,这就是我建议的。你仍然可以像这样从eclipse运行它:
该文件应如下所示:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.ui.externaltools.ProgramLaunchConfigurationType">
<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${resource}"/>
<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
<listEntry value="org.eclipse.ui.externaltools.launchGroup"/>
</listAttribute>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LAUNCH_CONFIGURATION_BUILD_SCOPE" value="${none}"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="/usr/bin/mvn"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="clean package -DskipTests=true -U"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${selected_resource_loc}"/>
</launchConfiguration>
只要在您的工作区中打开此项目,您就可以选择包含pom.xml
的任何其他项目文件夹,并从外部工具按钮中选择您的mvn-clean-package命令:
这将运行:
mvn clean package -DskipTests=true -U
从所选文件夹中。您可以在Eclipse控制台窗口中看到输出。
也可以从“运行”菜单访问外部工具。我想有一种方法可以通过Eclipse UI实现这一点,但是我没有足够长时间地使用Eclipse来发现它。