仅编译Maven中的选定文件

我想只编译源目录中的选定文件或目录(包括子目录)。 我很确定我可以使用maven-compiler-plugin配置的来做到这一点,但它似乎不能正常工作,因为它仍然将所有类编译成target/classes 。 真正奇怪的是,Maven输出表明该设置实际上是有效的,因为:

   maven-compiler-plugin 2.5.1   com/example/dao/bean/*.java    

我有:

 [INFO] Compiling 1 source file to c:\Projects\test\target\classes 

但是没有编译器的配置,我有:

 [INFO] Compiling 14 source file to c:\Projects\test\target\classes 

然而,在这两种情况下,如我所提到的,所有14个类都被编译成target/classes 。 你能解释一下或建议另一个解决方案来只编译选定的文件吗?

简单的应用程序有3个类。

 com/company/Obj1.java com/company/Obj2.java com/company/inner/Obj3.java 

pom.xml build

    org.apache.maven.plugins maven-compiler-plugin 2.0.2  1.6 1.6  com/company/inner/*.java      

结果:编译了1个类。
包含的任何组合都运作良好
或者你的意思是别的什么?

使用maven编译器插件2.5.1编译包含或排除文件没有任何困难。 这是我用于此目的的虚拟项目。 也许你使用的include模式是不同的。

使用类似Ant的包含/排除表示法的maven-compiler-plugin。 您可以在Ant文档Ant FileSet Type中看到示例

如果您只想包含一个目录中的文件,则需要像以下一样编写:

 com/example/dao/bean/*.java 

要包含路径中的子目录,它将是:

 com/example/dao/bean/**/*.java