我已经编写了一个自定义插件,然后我安装了它。然后我修改了我想要使用自定义插件的项目的pom.xml
。当我直接调用我的插件目标时,插件目标成功执行,但是当我尝试mvn compile
时,我的自定义插件目标没有被执行。可能是什么原因?
我的插件pom.xml
:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xxx.plugins.maven</groupId>
<artifactId>datanucleus-enhance-maven-plugin</artifactId>
<packaging>maven-plugin</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>Datanucleus-enhance Maven Plugin</name>
<dependencies>
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
<version>3.2</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
我使用自定义插件的项目我添加了以下内容:
<!-- enhance JDO classes -->
<plugin>
<groupId>com.sukantu.plugins.maven</groupId>
<artifactId>datanucleus-enhance-maven-plugin</artifactId>
<version>0.0.1-SNAPSHOT</version>
<configuration>
<jdoClassDirList>
<param>target/${project.artifactId}-${project.version}/WEB-INF/classes/</param>
</jdoClassDirList>
</configuration>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>enhance</goal>
</goals>
</execution>
</executions>
</plugin>
我从maven指南网站跟随将Mojo附加到构建生命周期部分:https://maven.apache.org/guides/plugin/guide-java-plugin-development.html
以下命令成功调用了我的插件目标:
mvn com.xxx.plugins.maven:datanucleus-enhance-maven-plugin:enhance
以下命令无法成功调用我的插件目标:
mvn compile
感谢您的任何意见!
答案 0 :(得分:1)
因此,我删除了<pluginManagement>
代码,因此<plugins>
直接显示在&#39; <build>
&#39;之下。然后我尝试了mvn compile
&#39;从命令行,它成功调用了我的自定义插件目标!
但是当我在Eclipse中检查pom.xml时,我看到了How to solve “Plugin execution not covered by lifecycle configuration” 引用的另一个错误。
由于命令行工作正常,我认为这是m2e Eclipse插件错误,因此我已经禁用了标记为“Eclipse&#39; - &GT; &#39;窗口&#39; - &GT; &#39;显示视图&#39; - &GT; &#39;标记&#39; - &GT;右键单击该标记 - &gt; &#39;删除&#39 ;.现在Eclipse没有显示任何错误,命令行也按预期工作。希望这有助于其他人。