我正在编写一个 Maven 2 插件,我想排除与我正在使用的源存储库(即 BitKeeper)相关的所有 java 文件。这些文件位于名为 SCCS 的目录中。到目前为止,我还没有成功。
当我添加带有排除数据的 maven-compile-plugin 时,如果我执行 mvn compiler:compile,它就会工作(排除 BitKeeper 文件)。但这并不绑定(bind)到编译阶段。因此,当我运行 mvncompile 时,它会在尝试编译源代码控制特定的 java 文件时崩溃。任何帮助或指示表示赞赏。
另一件事要注意:如果我将包装从“maven-plugin”更改为“jar”,一切都会完美运行,当然,我不能永久这样做,因为这是我正在尝试编写的一个 Maven 插件。
如果在其他地方回答了这个问题,我很抱歉。我已经在这里和 Maven 文档中浏览了几个小时,但是这个主题的所有内容似乎都与编写将打包在 jar 中的代码有关,而不是 Maven 插件。
这是我的 pom.xml:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycomp.mygroup</groupId>
<artifactId>special-persistence-plugin</artifactId>
<packaging>maven-plugin</packaging>
<version>1.0-SNAPSHOT</version>
<name>Special Persistence Plugin</name>
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>2.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>UTF-8</encoding>
<excludes>
<exclude>**/SCCS/**/*.java</exclude>
</excludes>
<phase>compile</phase>
<goals>
<goal>compiler:compile</goal>
</goals>
</configuration>
</plugin>
</plugins>
</build>
</project>
感谢任何对此有想法的人,
-麦金利峰
最佳答案
实际上, plugin:descriptor
在generate-resources
期间触发compile
之前的阶段(有关 maven-plugin
类型的包装,请参阅 lifecycle reference)。
无论如何,这里的问题是,无论失败的原因是什么(即使mojo能够解析必须包含一些意外 header 的p.STSMojo.java
,该插件也不允许Mojo出现两次) ,Maven Plugin Plugin 不支持包含/排除(请参阅 MPLUGIN-15 并为其投票),我不确定您是否可以通过配置解决此问题。
也许你可以在代码不受版本控制的情况下生成插件描述符,将描述符放在 /META-INF/maven/plugin.xml
中并配置Maven插件跳过描述符生成。但我没有对此进行测试。
或者也许你可以(干净或肮脏)修复该插件。但我没有看源码,所以我不能对此说太多。
或者,这当然不是预期的答案,但仍然是最简单的,您可以为您的 mojo 使用另一个 VCS(仅用于 Mojo,为什么不与 bitkeeper 并行)。
我将从对 Jira 问题的评论开始(您的用例完全有效并且应该受到支持),您可能会在那里得到更好的想法。
关于maven-2 - 开发maven插件,如何排除bitkeeper文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2436826/