开发maven插件,如何排除bitkeeper文件

时间:2010-03-13 00:58:26

标签: maven-2

我正在编写一个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

1 个答案:

答案 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问题发表评论(您的用例非常有效且应该受到支持),您可能会在那里获得更好的想法。