我正在编写一个maven 2插件,我想排除与我正在使用的源存储库相关的所有java文件,即BitKeeper。这些文件位于名为SCCS的目录中。到目前为止,我一直没有成功。
当我添加带有排除数据的maven-compile-plugin时,如果我执行mvn compiler:compile,它可以工作(BitKeeper文件被排除)。但这并不是对编译阶段的约束。因此,当我运行mvn compile时,它会尝试编译源代码控制特定的java文件。任何帮助或指针赞赏。
另外需要注意的是:如果我将包装从“maven-plugin”更改为“jar”,那么一切都很完美,当然,我不能永久地做,因为这是我想写的maven插件。 / p>
如果在其他地方得到解答,我很抱歉。我在这里浏览了几个小时并通过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>
感谢任何有此想法的人,
-Denali
答案 0 :(得分:1)
实际上,在generate-resources
之前的compile
阶段会触发plugin:descriptor
(有关maven-plugin
类型的打包,请参阅lifecycle reference)。
无论如何,这里的问题是无论失败的原因(即使mojo能够解析必须包含一些意外标题的p.STSMojo.java
,插件也不允许Mojo存在两次),Maven Plugin Plugin 不支持包含/排除(请参阅MPLUGIN-15并投票支持),我不确定您是否可以通过配置解决此问题。
也许你可以在代码不受版本控制的情况下生成插件描述符,将描述符放在/META-INF/maven/plugin.xml
中并配置Maven插件插件以跳过描述符生成。但我没有测试这个。
或许你可以(清理或弄脏)修复插件。但我没有看到消息来源,所以我不能多说这个。
或者,这肯定不是预期的答案,但仍然是最简单的,你可以使用另一个VCS为你的mojo(只为Mojo,为什么不与bitkeeper并行)。
我首先对Jira问题发表评论(您的用例非常有效且应该受到支持),您可能会在那里获得更好的想法。